代码
#include <iostream>using namespace std;class Sofa
{
private:string sit;int *len;
public:Sofa(){cout << "Sofa::无参构造函数" << endl;}Sofa(string sit,int len):sit(sit),len(new int(len)){cout << "Sofa::有参构造函数" << endl;}~Sofa(){delete len;cout << "Sofa::析构函数" << endl;}Sofa &operator=(const Sofa &other){if(this != &other){sit = other.sit;len = new int(*(len));}cout << "Sofa::拷贝赋值函数" << endl;return *this;}Sofa(const Sofa &other):sit(other.sit),len(new int(*(other.len))){cout << "Sofa::拷贝构造函数" << endl;}void show(){cout << sit << '\t' << "沙发的长度为:" << *len;}
};
class Bed
{
private:string sleep;
public:Bed(){cout << "Bed::无参构造函数" << endl;}Bed(string sleep):sleep(sleep){cout << "Bed::有参构造函数" << endl;}~Bed(){cout << "Bed::析构函数" << endl;}Bed &operator=(const Bed &other){if(this != &other){sleep = other.sleep;}cout << "Bed::拷贝赋值函数" << endl;return *this;}Bed(const Bed &other):sleep(other.sleep){cout << "Bed::拷贝构造函数" << endl;}void show(){cout << '\t' << sleep << '\t';}
};
class Sofa_Bed:public Sofa,public Bed
{
private:string color;
public:Sofa_Bed(){cout << "Sofa_Bed::无参构造函数" << endl;}Sofa_Bed(string sit,int len,string sleep,string color):Sofa(sit,len),Bed(sleep),color(color){cout << "Sofa_Bed::有参构造函数" << endl;}~Sofa_Bed(){cout << "Sofa_Bed::析构函数" << endl;}Sofa_Bed &operator=(const Sofa_Bed &other){if(this != &other){Sofa::operator=(other);Bed::operator=(other);color = other.color;}cout << "Sofa_Bed::拷贝赋值函数" << endl;return *this;}Sofa_Bed(const Sofa_Bed &other):Sofa(other),Bed(other),color(other.color){cout << "Sofa_Bed::拷贝构造函数" << endl;}void show(){cout << "沙发的颜色为:" << color << endl;}};
int main()
{Sofa_Bed SB1("坐",185,"睡","pink");SB1.Sofa::show();SB1.Bed::show();SB1.show();return 0;
}
效果图:
思维导图: