C++ 实现多继承和组合

设计一个计算机系统类,由软件和硬件组合而来

使用c++的继承和组合

思路

  1. 首先定义一个硬件和软件类,包含各自的数据成员和成员函数
  2. 采用多继承实现计算机系统类
  3. 采用组合实现计算机系统
  4. 最后 在main()中进行测试

#include <iostream>
#include <string.h>

using namespace std;

class CHard
{
    public :
        CHard(char *bn)
        {
            strcpy(bodyname, bn);
        }
        CHard(CHard &h)
        {
            strcpy(bodyname, h.bodyname);
        }
        void Disp()
        {
            cout<<"bodyname :"<<bodyname<<endl;
        }
    protected:
        char bodyname[24];
};


class CSoft
{
    public :
        CSoft(char *s, char *l)
        {
            strcpy(os, s);
            strcpy(lang, l);
        }
        CSoft(CSoft &h)
        {
            strcpy(os, h.os);
            strcpy(lang, h.lang);
        }
        void Disp()
        {
            cout<<"lang :"<<lang<<endl;
            cout<<"os :"<<os<<endl;
        }
    protected:
        char os[24];
        char lang[16];
};

class CSystem:public CHard, public CSoft
{
    public :
        CSystem(char *ow, char *bn, char *s, char *l):CHard(bn),CSoft(s,l)
        {
            strcpy(owner, ow);
        }
        CSystem(char *ow, CHard h, CSoft s):CHard(h),CSoft(s)
        {
            strcpy(owner, ow);
        }
        void Disp();
    private:
        char owner[16];
};
void CSystem::Disp()
{
    cout<<"Owner :"<<owner<<endl;
    CHard::Disp();
    CSoft::Disp();
}

class CSystem2
{
    public :
        CSystem2(char *ow, CSoft &soft, CHard &hard);
        void Disp();
    private:
        char owner[16];
        CHard h;
        CSoft s;
};
void CSystem2::Disp()
{
    cout<<"Owner :"<<owner<<endl;
    h.Disp();
    s.Disp();
    cout<<ends;
}
CSystem2::CSystem2(char *ow,CSoft& soft, CHard& hard):h(hard),s(soft)
{
    strcpy(owner, ow);
}

int main()
{
    CSystem sys("zhangsan", "legend", "windows 7", "C++ language");
    sys.Disp();
    cout<<"组合方式 :"<<endl;
    CHard h("IBM");
    CSoft s("Linux", "Java");
    CSystem2 sys2("lisi",s,h);
    sys2.Disp();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/ai_shuyingzhixia/article/details/80355802
今日推荐