#include <iostream>
using namespace std;
class Sofa
{
private:
string * sit;
public:
Sofa(){cout << "sofa::无参构造函数" << endl;}
Sofa(string sit):sit(new string(sit))
{
cout << "sofa::有参构造函数" << endl;
}
Sofa(const Sofa &other):sit(new string(*(other.sit)))
{
cout << "sofa::拷贝构造函数" << endl;
}
Sofa & operator=(const Sofa &other)
{
if(this != &other)
{
sit=new string(*(other.sit));
}
cout << "sofa::拷贝赋值函数" << endl;
}
~Sofa()
{
cout << "sofa::析构函数" << endl;
delete sit;
}
void show()
{
cout << "Sofa::sit:" << *sit <<endl;
}
};
class Bed
{
private:
string * sleep;
public:
Bed(){cout << "Bed::无参构造函数" << endl;}
Bed(string sleep):sleep(new string(sleep))
{
cout << "Bed::有参构造函数" << endl;
}
Bed(const Bed &other):sleep(new string(*(other.sleep)))
{
cout << "Bed::拷贝构造函数" << endl;
}
Bed & operator=(const Bed &other)
{
if(this != &other)
{
sleep=new string(*(other.sleep));
}
cout << "Bed::拷贝赋值函数" << endl;
}
~Bed()
{
cout << "Bed::析构函数" << endl;
delete sleep;
}
void show()
{
cout << "Bed::sleep:" << *sleep <<endl;
}
};
class Sofabed:public Sofa,public Bed
{
private:
string *color;
public:
Sofabed(){cout << "Sofabed::无参构造函数" << endl;}
Sofabed(string sit,string sleep,string color):Sofa(sit),Bed(sleep),color(new string(color))
{
cout << "Sofabed::有参构造函数" << endl;
}
Sofabed(const Sofabed &other):Sofa(other),Bed(other),color(new string (*(other.color)))
{
cout << "Sofabed::拷贝构造函数" << endl;
}
Sofabed & operator=(const Sofabed &other)
{
if(this != &other)
{
color=new string (*(other.color));
Sofa::operator=(other);
Bed::operator=(other);
}
cout << "Sofabed::拷贝赋值函数" << endl;
}
~Sofabed()
{
delete color;
// Sofa::~Sofa();
// Bed::~Bed();
cout << "Sofabed::析构构造函数" << endl;
}
void show()
{
Sofa::show();
Bed::show();
cout << "Sofabed::color:" << *color <<endl;
}
};
int main()
{
cout << "___________________________________________" << endl;
Sofa s1;
Sofa s2("可坐属性");
s2.show();
cout << "___________________________________________" << endl;
Bed b1;
Bed b2("可睡觉属性");
b2.show();
cout << "___________________________________________" << endl;
Sofabed s_b1;
Sofabed s_b2("可坐属性","可睡觉属性","颜色属性");
s_b2.show();
s_b2.Sofa::show();
s_b2.Bed::show();
cout << "___________________________________________" << endl;
return 0;
}
12/04
最新推荐文章于 2024-09-04 17:18:01 发布