完成沙发床的多继承
#include <iostream>using namespace std;//封装 沙发 类
class Sofa
{
private:string *sitting;
public://无参构造函数Sofa(){cout << "Sofa::无参构造函数" << endl;}//有参构造函数Sofa(string s):sitting(new string(s)){cout << "Sofa::有参构造函数" << endl;}//拷贝构造函数Sofa(const Sofa &other):sitting(new string(*(other.sitting))){cout << "Sofa::拷贝构造函数" << endl;}//拷贝赋值函数Sofa &operator=(const Sofa &other){if(this != &other){sitting = new string(*(other.sitting));}cout << "Sofa::拷贝赋值函数" << endl;return *this;}//析构函数~Sofa(){delete sitting;cout << "Sofa::析构函数" << endl;}void show(){cout << *sitting << endl;}
};//封装 床 类
class Bed
{
private:string sleep;
public://无参构造函数Bed(){cout << "Bed::无参构造函数" << endl;}//无参构造函数Bed(string sleep):sleep(sleep){cout << "Bed::有参构造函数" << endl;}//拷贝构造函数Bed(const Bed &other):sleep(other.sleep){cout << "Bed::拷贝构造函数" << endl;}//拷贝赋值函数Bed &operator=(const Bed &other){if(this != &other){sleep = other.sleep;}return *this;}//析构函数~Bed(){cout << "Bed::拷贝析构函数" << endl;}void show(){cout << sleep << endl;}
};
//封装 沙发床 类 共有继承于沙发和床
class Sofa_bed:public Sofa,public Bed
{
private:string *color;
public://无参构造函数Sofa_bed(){cout << "Sofa_bed::无参构造函数" << endl;}//有参构造函数Sofa_bed(string s,string sleep,string color):Sofa(s),Bed(sleep),color(new string(color)){cout << "Sofa_bed::有参构造函数" << endl;}//拷贝构造函数Sofa_bed(const Sofa_bed &other):Sofa(other),Bed(other),color(new string(*(other.color))){cout << "Sofa_bed::拷贝构造函数" << endl;}//拷贝赋值函数Sofa_bed &operator=(const Sofa_bed &other){if(this != &other){Sofa::operator=(other);Bed::operator=(other);color = new string(*(other.color));}cout << "Sofa_bed::拷贝赋值函数" << endl;return *this;}//析构函数~Sofa_bed(){delete color;}void show(){Sofa::show();Bed::show();cout << *color << endl;}
};
int main()
{Sofa_bed sd;Sofa_bed sd1("可坐", "可睡", "blud");sd1.show();Sofa_bed sd2(sd1);sd2.show();sd = sd1;sd.show();return 0;
}