1.沙发床的多继承
#include <iostream>using namespace std;
class Sofa
{
private:string sit;
public://无参构造Sofa(){}//有参构造Sofa(string sit):sit(sit){}//拷贝构造Sofa(const Sofa &other):sit(other.sit){}//拷贝赋值Sofa &operator = (const Sofa &other){if(this != &other){sit=other.sit;}return *this;}//析构函数~Sofa(){}void show(){cout << "sit=" << sit;}
};
class Bed
{
private:string *sleep;
public://无参构造Bed(){}//有参构造Bed(string sleep):sleep(new string(sleep)){}//拷贝构造Bed(const Bed &other):sleep(new string(*(other.sleep))){}//拷贝赋值Bed &operator = (const Bed &other){if(this != &other){sleep=other.sleep;}return *this;}//析构函数~Bed(){}void show(){cout << " sleep=" << *sleep;}
};
class Sofa_Bed:public Sofa,public Bed
{
private:string color;
public://无参构造Sofa_Bed(){}//有参构造Sofa_Bed(string sit,string sleep,string color):Sofa(sit),Bed(sleep),color(color){}//拷贝构造Sofa_Bed(const Sofa_Bed &other):Sofa(other),Bed(other),color(other.color){}//拷贝赋值Sofa_Bed &operator = (const Sofa_Bed & other){if(this != &other){Sofa::operator=(other);Bed::operator=(other);color=other.color;}return *this;}//析构函数~Sofa_Bed(){}void show(){Sofa::show();Bed::show();cout << " color=" << color << endl;}
};int main()
{Sofa_Bed bs;Sofa_Bed bs1("可做","可睡","白色");bs1.show();bs=bs1;bs.show();Sofa_Bed bs2 = bs1;bs2.show();return 0;
}
2.思维导图