#include <iostream>using namespace std;class Sofa
{
private:string sitting;double *weight;
public:Sofa(){cout << "Sofa::无参构造函数" << endl;}Sofa(string s,double w):sitting(s),weight(new double(w)){cout << "Sofa::有参构造函数" << endl;}Sofa(const Sofa &other):sitting(other.sitting),weight(new double(*(other.weight))){cout << "Sofa::拷贝构造函数" << endl;}Sofa &operator=(const Sofa &other){if(this!=&other){sitting = other.sitting;weight = new double(*(other.weight));}cout << "Sofa::拷贝赋值函数" << endl;return *this;}~Sofa(){cout << "Sofa::析构函数" << endl;delete weight;}void show(){cout << "sitting = " << sitting << endl;cout << "weight = " << weight<< endl;}
};
class Bed
{
private:string sleep;
public:Bed(){cout << "Bed::无参构造函数" << endl;}Bed(string sl):sleep(sl){cout << "Bed::有参构造函数" << endl;}Bed(const Bed &other):sleep(other.sleep){cout << "Bed::拷贝构造函数" << endl;}Bed &operator=(const Bed &other){if(this!=&other){sleep = other.sleep;}cout << "Bed::拷贝赋值函数" << endl;return *this;}~Bed(){cout << "Bed::析构函数" << endl;}void show(){cout << "sleep = " << sleep << endl;}
};
class SofaBed:public Sofa,public Bed
{
private:string color;
public:SofaBed(){cout << "SofaBed::无参构造函数" << endl;}SofaBed(string s,double w,string sl,string c):Sofa(s,w),Bed(sl),color(c){cout << "SofaBed::有参构造函数" << endl;}SofaBed(const SofaBed &other):Sofa(other),Bed(other),color(other.color){cout << "SofaBed::拷贝构造函数" << endl;}SofaBed &operator=(const SofaBed &other){if(this!=&other){color = other.color;Sofa::operator=(other);Bed::operator=(other);}cout << "SofaBed::拷贝赋值函数" << endl;return *this;}~SofaBed(){cout << "SofaBed::析构函数" << endl;}
};int main()
{SofaBed s("坐着",70.0,"睡着","black");s.Sofa::show();s.Bed::show();return 0;
}