OJ嘻唰唰之改错题(6)-虚拟继承(虚基类)沙发床

原创 2015年07月07日 15:28:07
问题及代码:
/*
*Copyright(c)2014,烟台大学计算学院
*All  rights reserved.
*文件名称:test.cpp
*作者:陈银丽
*完成日期:2015年7月7日
*版本号:v1.0
*
*问题描述:虚拟继承(虚基类)—沙发床.有一种特殊的床,既能当床(Bed)用又能当沙发(Sofa)用,所以叫沙发床(SleeperSofa)。同时床和沙发
又是一种特殊的家具(Furniture),具有一切家具的特性。利用虚拟继承(虚基类)建立一个类的多重继承,沙发床继承了床和沙发的特性。下面
的程序中,在begin到end部分存在语法错误。请改正错误,使程序按下面输入输出的规定运行。注意:只提交修改过的begin到end部分的代码。
*输入描述:存在错误的代码
//床类Bed
class Bed: public Furniture
{
public:
Bed(double we,double l,double wi):Furniture(we),length(l),width(wi){}
void display()
{
cout<<"length:"<<length<<endl;
cout<<"width:"<<width<<endl;
}
protected:
double length; //床的长
double width; //床的宽
};

//沙发类Sofa
class Sofa: public Furniture
{ public:
Sofa(double w,double h):Furniture(w),height(h){}
void display()
{
cout<<"height:"<<height<<endl;
}
protected:
double height; //沙发的高度
};

//沙发床
class SleeperSofa:public Bed, public Sofa
{public:
SleeperSofa(double we,double l,double wi,double h):Bed(we,l,wi),Sofa(we,h){ }
void display()
{
cout<<"weight:"<<weight<<endl;
Bed::display();
Sofa::display();
}
};
*程序输出:
*/

#include <iostream>
using namespace std;

//家具类Furniture
class Furniture
{
public:
Furniture(double w)
{ weight=w; }
void display()
{
cout<<"weight:"<<weight<<endl;
}
protected:
double weight; //家具重量
};

class Bed: public Furniture
{
public:
Bed(double we,double l,double wi):Furniture(we),length(l),width(wi){}
void display()
{
Furniture::display();
cout<<"length:"<<length<<endl;
cout<<"width:"<<width<<endl;
}
protected:
double length; //床的长
double width; //床的宽
};

//沙发类Sofa
class Sofa: public Furniture
{ public:
Sofa(double w,double h):Furniture(w),height(h){}
void display()
{
cout<<"height:"<<height<<endl;
}
protected:
double height; //沙发的高度
};

//沙发床
class SleeperSofa:public Bed, public Sofa
{public:
SleeperSofa(double we,double l,double wi,double h):Bed(we,l,wi),Sofa(we,h){ }
void display()
{
Bed::display();
Sofa::display();
}
};
int main()
{
double weight,length,width,height;
cin>>weight>>length>>width>>height;

SleeperSofa ss(weight,length,width,height);
ss.display();

return 0;
}

知识点总结:虚基类,使得在继承间接共同基类时只保留一份成员。

学习心得:改错有很多方式,不必拘泥于一种

OJ第三批——Problem Q: B 虚拟继承(虚基类)-沙发床(改错题)

问题及代码: Problem Q: B 虚拟继承(虚基类)-沙发床(改错题) Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 356  Solve...

YTU 2622: B 虚拟继承(虚基类)-沙发床(改错题)

2622: B 虚拟继承(虚基类)-沙发床(改错题) 时间限制: 1 Sec  内存限制: 128 MB 提交: 487  解决: 393 题目描述  有一种特殊的床,既能当床...

OJ嘻唰唰之改错题(3)植物与花

问题及代码 /* *Copyright(c)2014,烟台大学计算学院 *All rights reserved. *文件名称:test.cpp *作者:陈银丽 *完成日期:2015年7月4日 *版...
  • CKL1029
  • CKL1029
  • 2015年07月05日 19:30
  • 624

虚拟继承,虚基类

虚拟继承与虚基类实际上是说了同一件事,只是不同的书表达不同,在这里还是推荐虚拟继承这种说法(因为有人总问虚基类是什么,这里可以解释为虚基类就是虚拟继承,一种继承的方式,有的书偏要把一个动作写成一个名词...

(虚拟继承)Problem C: 学生干部虚基类

Problem C: 学生干部虚基类Time Limit: 1 Sec Memory Limit: 2 MB Submit: 1736 Solved: 1135 [Submit][Status...

【c++】深入剖析虚拟继承与各种继承关系中派生类内成员内存分布情况及虚基类表的内容

单继承 多继承 多重继承 菱形继承 单继承与虚继承 多继承与虚继承 多重继承与虚继承 菱形继承与虚继承 虚基类表指针 虚基类表 不同继承方式成员对面模型 内存分布情况 赋值顺序...

【OJ】---B---C++继承(改错题)

题目要求如下: -----------------------------------------------------------------------------------------...

第十六周oj刷题——Problem I: 改错题:类中私有成员的访问

Description 改错题: 设计一个日期类和时间类,并编写全局函数display用于显示日期和时间。要求:display函数作为类外的普通函数,而不是成员函数 在主函数中调用dis...

OJ嘻唰唰之填空题(1)删除线性表节点

问题及代码: /* *Copyright(c)2014,烟台大学计算学院 *All rights reserved. *文件名称:test.cpp *作者:陈银丽 *完成日期:2015年7月7日 *...
  • CKL1029
  • CKL1029
  • 2015年07月07日 21:26
  • 655

OJ嘻唰唰之类模板(1)类模板---求数组的最大值

问题及代码: /* *Copyright(c)2014,烟台大学计算学院 *All rights reserved. *文件名称:test.cpp *作者:陈银丽 *完成日期:2015年7月7日 *...
  • CKL1029
  • CKL1029
  • 2015年07月07日 21:07
  • 591
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OJ嘻唰唰之改错题(6)-虚拟继承(虚基类)沙发床
举报原因:
原因补充:

(最多只允许输入30个字)