#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;
}
12.04
最新推荐文章于 2024-07-24 21:34:55 发布