题目:设计一个家具类(长、宽、高),派生出一个沙发类(新增数据成员颜色)和一个床类(新增数据成员材质) ,再由它们派生出一个沙发床类,并增加成员形状。使用虚基类,使沙发床类只继承一份家具类拷贝。定义构造函数,并测试类的结构是否合理。
#include <iostream>
#include <string>
using namespace std;
//家具类Furniture
class Furniture
{
public:
Furniture(double l = 0.0,double w= 0.0,double h= 0.0)
{
length = l;
width = w;
height = h;
}
void display()
{
cout<<"长度:"<<length<<endl;
cout<<"宽度:"<<width<<endl;
cout<<"高度:"<<height<<endl;
}
protected:
double length;
double width;
double height;
};
//床类Bed
class Bed: virtual public Furniture
{
public:
Bed(double l,double w,double h,string mq)
:Furniture(l,w,h),maqu(mq){}
void display()
{
Furniture::display();
cout<<"材质:"<<maqu<<endl;
}
protected:
string maqu;//床的材质
};
//沙发类Sofa
class Sofa: virtual public Furniture
{
public:
Sofa(double l,double w,double h,string c)
:Furniture(l,w,h),colour(c){}
void display()
{
Furniture::display();
cout<<"颜色:"<<colour<<endl;
}
protected:
string colour; //沙发的颜色
};
//沙发床
class SleeperSofa:public Bed, public Sofa
{
public:
SleeperSofa(double l,double w,double h,string mq,
string c,string s)
:Furniture(l,w,h),Bed(l,w,h,mq)
,Sofa(l,w,h,c),shape(s){}
void display()
{
Sofa::display();
cout<<"材质:"<<maqu<<endl;
cout<<"形状:"<<shape<<endl;
}
protected:
string shape; //沙发床的形状
};
int main()
{
SleeperSofa ss(10.4,10.6,10.8,"橡木","红色","方形");
ss.display();
system("pause");
return 0;
}