完成沙发床的多继承
#include <iostream>
using namespace std;
class Bed
{
private:
string sleeping;
public:
double *price;
public:
Bed()
{
cout << "Bed::无参构造函数" << endl;
}
Bed(string sleeping,int price):sleeping(sleeping),price(new double(price))
{
cout << "Bed::有参构造函数" << endl;
}
Bed(const Bed &other):sleeping(other.sleeping),price(new double(*(other.price)))
{
cout << "Bed::拷贝构造函数" << endl;
}
Bed &operator=(const Bed &other)
{
if(this != &other)
{
sleeping = other.sleeping;
price = new double(*(other.price));
}
cout << "Bed::拷贝赋值函数" << endl;
return *this;
}
~Bed()
{
cout << "Bed::析构函数" << endl;
}
};
class Sofa
{
private:
string sitting;
protected:
double *soft;
public:
Sofa()
{
cout << "Sofa::无参构造函数" << endl;
}
Sofa(string sitting,int soft):sitting(sitting),soft(new double(soft))
{
cout << "Sofa::有参构造函数" << endl;
}
Sofa(const Sofa &other):sitting(other.sitting),soft(new double(*(other.soft)))
{
cout << "Sofa::拷贝构造函数" << endl;
}
Sofa &operator=(const Sofa &other)
{
if(this != &other)
{
sitting = other.sitting;
soft = new double(*(other.soft));
}
cout << "Sofa::拷贝赋值函数" << endl;
return *this;
}
~Sofa()
{
cout << "Sofa::析构函数" << endl;
}
};
class Sofa_bed:public Sofa,public Bed
{
private:
string *lying;
public:
Sofa_bed()
{
cout << "Sofa_bed::无参构造函数" << endl;
}
Sofa_bed(string lying,string sitting,int soft,string sleeping,double price):Sofa(sitting,soft),Bed(sleeping,price),lying(new string(lying))
{
cout << "Sofa_bed::有参构造函数" << endl;
}
Sofa_bed(const Sofa_bed &other):Sofa(other),Bed(other),lying(new string(*(other.lying)))
{
cout << "Sofa_bed::拷贝构造函数" << endl;
}
Sofa_bed &operator=(const Sofa_bed &other)
{
if(this != &other)
{
Sofa::operator=(other);
Bed::operator=(other);
lying = new string(*(other.lying));
}
cout << "Sofa_bed::拷贝赋值函数" << endl;
return *this;
}
~Sofa_bed()
{
cout << "Sofa_bed::析构函数" << endl;
}
};
int main()
{
Sofa_bed a1("躺","坐",10,"睡",99.9);
Sofa_bed a2 = a1;
Sofa_bed a3;
a3 = a2;
return 0;
}
思维导图