Keven_fall 2023-04-03 20:02 采纳率: 100%
浏览 31
已结题

声明一个抽象类 CMed 作为基类

C++编程题目:
声明一个抽象类 CMed 作为基类,其中
1)包含一个 string 类型数据成员 title(名称)和两个纯虚函数 print( )和 id( )。
2)派生出 CBook 类、CCD 类和 CMag 类。
3)在 CBook 类中,包含 3 个 string 类型数据成员 author(作者)、pub(出版
社)、isbn(书号)和函数成员 print( )及 id( )。
4)在 CCD 类中,包含 3 个 string 类型数据成员 composer(制作者)、make(介
质形式)、number(编号)和函数成员 print( )及 id( )。
5)在 CMag 类中,包含 2 个 string 类型数据成员 issn(杂志编号)、pub(出版
社),两个整型数据成员 volume(卷)、number(号)和函数成员 print( )及 id( )。
6)派生类的 print( )和 id( )函数功能请自行设计。

基类和派生类的定义与初始化我已经完成,请问函数体部分和主函数内容怎么写。

#include <iostream>
using namespace std;

class CMed {
public:
    CMed(string title);
    virtual void ptint() = 0;
    virtual void id() = 0;
private:
    string _title;
};

CMed::CMed(string title) {
    _title = title;
}

class CBook:public CMed {
public:
    CBook(string author, string pub, string isbn, string title);
    void print() {}
    void id() {}
private:
    string _author;
    string _pub;
    string _isbn;
    string _title;
};

CBook::CBook(string author, string pub, string isbn, string title):CMed(title)
{
    _author = author;
    _pub = pub;
    _isbn = isbn;
    _title = title;
}

class CCD:public CMed {
public:
    CCD(string composer, string make, string number, string title);
    void print() {}
    void id(){}
private:
    string _composer;
    string _make;
    string _number;
    string _title;
};

CCD::CCD(string composer, string make, string number, string title):CMed(title) 
{
    _composer = composer;
    _make = make;
    _number = number;
    _title = title;
}
//在 CMag 类中,包含 2 个 string 类型数据成员 issn(杂志编号)、pub(出版社),两个整型数据成员 volume(卷)、number(号)和函数成员 print()及 id()。
class CMag :public CMed {
public:
    CMag(string issn, string pub, int volume, int number,string title);
    void print(){}
    void id(){}
private:
    string _issn;
    string _pub;
    int _number;
    int _volume;
};

CMag::CMag(string issn, string pub, int volume, int number, string title) :CMed(title) 
{
    _issn = issn;
    _pub = pub;
    _number = number;
    _volume = volume;
}

int main()
{
    return 0;
}

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-04-03 20:29
    关注

    参考如下:

    #include <iostream>
    using namespace std;
     
    class CMed {
    public:
        CMed(string title);
        virtual void print() = 0;
        virtual void id() = 0;
    public:
        string _title;
    };
     
    CMed::CMed(string title) {
        _title = title;
    }
     
    class CBook:public CMed {
    public:
        CBook(string author, string pub, string isbn, string title);
        void print() {
            cout<< "作者:" << _author << ", 出版社:" << _pub << ", 标题:" << _title << endl;
        }
        void id() {
            cout<< "国际标准书号:" << _isbn << endl;
        }
    private:
        string _author;
        string _pub;
        string _isbn;
        string _title;
    };
     
    CBook::CBook(string author, string pub, string isbn, string title):CMed(title)
    {
        _author = author;
        _pub = pub;
        _isbn = isbn;
        _title = title;
    }
     
    class CCD:public CMed {
    public:
        CCD(string composer, string make, string number, string title);
        void print() {
            cout<< "创作者:" << _composer << ", 发表:" << _make <<  ", 标题:" << _title << endl;       
        }
        void id(){
            cout<< "CCD编号:" << _number << endl;
        }
    private:
        string _composer;
        string _make;
        string _number;
        string _title;
    };
     
    CCD::CCD(string composer, string make, string number, string title):CMed(title) 
    {
        _composer = composer;
        _make = make;
        _number = number;
        _title = title;
    }
    //在 CMag 类中,包含 2 个 string 类型数据成员 issn(杂志编号)、pub(出版社),两个整型数据成员 volume(卷)、number(号)和函数成员 print()及 id()。
    class CMag :public CMed {
    public:
        CMag(string issn, string pub, int volume, int number,string title);
        void print(){
            cout<< "杂志编号:" << _issn << ", 出版社:" << _pub << ",卷" << _volume << ", 编号" << _number << ", 标题:" << _title << endl; 
        }
        void id(){
            cout<< "CMag编号:" << _number << endl;
        }
    private:
        string _issn;
        string _pub;
        int _number;
        int _volume;
    };
     
    CMag::CMag(string issn, string pub, int volume, int number, string title) :CMed(title) 
    {
        _issn = issn;
        _pub = pub;
        _number = number;
        _volume = volume;
    }
     
    int main()
    {
        CBook cbook("Huazie", "XX出版设", "SN00001", "C语言从入门到放弃");
        cbook.id();
        cbook.print();
    
        // 其他两个类似
    
        return 0;
    }
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月13日
  • 已采纳回答 4月5日
  • 创建了问题 4月3日

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上