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

时间限制: 1 Sec  内存限制: 128 MB

提交: 487  解决: 393

题目描述

有一种特殊的床,既能当床(Bed)用又能当沙发(Sofa)用,所以叫沙发床(SleeperSofa)。

同时床和沙发又是一种特殊的家具(Furniture),具有一切家具的特性。

利用虚拟继承(虚基类)建立一个类的多重继承,沙发床继承了床和沙发的特性。

下面的程序中,在begin到end部分存在语法错误。请改正错误,使程序按下面输入输出的规定运行。

注意:只提交修改过的begin到end部分的代码。

#include <iostream>

using namespace std;

//家具类Furniture

class Furniture

{

public:

Furniture(double w)

{ weight=w; }

void display()

{

cout<<"weight:"<<weight<<endl;

}

protected:

double weight; //家具重量

};

//******************** begin ********************

//床类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();

}

};

//********************* end ********************

int main()

{

double weight,length,width,height;

cin>>weight>>length>>width>>height;

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

ss.display();



return 0;

}

输入

依次输入沙发床的重量、长、宽、高

输出

依次输出沙发床的重量、长、宽、高

样例输入

200 1.8 1.5 1.2

样例输出

weight:200
length:1.8
width:1.5
height:1.2

提示

改错思路有多种,只要程序能运行出正确结果,怎样改错都可以

迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……

#include <iostream>
using namespace std;
//家具类Furniture
class Furniture
{
public:
Furniture(double w)
{
weight=w;
}
void display()
{
cout<<"weight:"<<weight<<endl;
}
protected:
double weight; //家具重量
};
//床类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 Furniture
{
public:
SleeperSofa(double we,double l,double wi,double h):Bed(we,l,wi),Sofa(we,h),Furniture(we) { }
void display()
{
cout<<"weight:"<<weight<<endl;
Bed::display();
Sofa::display();
}
protected:
double weight=200;
};
int main()
{
double weight,length,width,height;
cin>>weight>>length>>width>>height;
SleeperSofa ss(weight,length,width,height);
ss.display();
return 0;
}

YTU 2622: B 虚拟继承(虚基类)-沙发床(改错题)的更多相关文章

  1. C/C++ 多继承{虚基类,虚继承,构造顺序,析构顺序}

    C/C++:一个基类继承和多个基类继承的区别 1.对多个基类继承会出现类之间嵌套时出现的同名问题,如果同名变量或者函数出现不在同一层次,则底层派生隐藏外层比如继承基类的同名变量和函数,不会出现二义性, ...

  2. C++ 由虚基类 虚继承 虚函数 到 虚函数表

    //虚基类:一个类可以在一个类族中既被用作虚基类,也被用作非虚基类. class Base1{ public: Base1(){cout<<"Construct Base1!&q ...

  3. 【C++】继承(虚基类)

    类的继承与派生 面向对象技术强调软件的可重用性,这种重用性通过继承机制来实现.而在类的继承过程中,被重用的原有类称为基类,新创建的类称为派生类.派生类定义语法格式如下: class <派生类名& ...

  4. C++ (P160—)多继承 二义性 虚基类 “向上转型”

    1 多继承中,必须给每个基类指定一种派生类型,如果缺省,相应的基类则取私有派生类型,而不是和前一个基类取相同的派生类型 2 一个类的保护成员只能被本类的成员函数或者它的派生类成员函数访问 3 由于c+ ...

  5. C++学习之路—继承与派生(三):多重继承与虚基类

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 多重继承是指一个派生类有两个或多个基类.例如,有 ...

  6. C++ 多继承与虚基类

    转载来自:CSDN insistGoGo  (http://blog.csdn.net/insistgogo) 多继承的定义:派生类的基类大于一个 语法: class  派生类名:继承方式1 基类名1 ...

  7. C#虚基类继承与接口的区别

    类:定义新的数据类型以及这些新的数据类型进行相互操作的方法 定义方式: class Cat { } class Cat:object { } C#中所有的类都是默认由object类派生来的,显示指定或 ...

  8. C++ 类的继承六(多继承的二义性--虚基类)

    //多继承的二义性--虚基类(了解为主) #include<iostream> using namespace std; /* 多继承在现在的项目开发中一般不使用,他会增加项目的复杂度 * ...

  9. C++ 虚基类 派生与继承

    在学习设计模式时我就有一个疑问,关联和继承除了用法上的区别,好像在内存上并没有什么区别,继承也是父类作为了子类的元素(内存上),关联也是这样.而且关联好像更占内存一些.这就是设计模式里问题了“依赖倒转 ...

随机推荐

  1. CF147B Smile House

    题目大意:给定一个有向图,其中边有边权.求点数最少的正环的点数. 题解:建立矩阵,处理其二进制上每一位的状态.时间O(n^3*log(n)). 代码: #include<cstdio> # ...

  2. Python:安装3.6

    centos7 自带有 python,但是却是 python2 版本的 python,如果你想安装个python3怎么办呢?难道要从github上把源码clone下来进行编译安装么?没错!因为 yum ...

  3. web应用无法访问的原因之一以及如何设置数据库编码

    这篇随笔,本是应该是在前天晚上发的,但是因为事情太多,硬生生拖到了现在,当时,在我将web应用部署到服务器上时,在调用接口时,客户端没有任何反应,应该是又出异常了,查看了控制台的异常输出,提示requ ...

  4. 全文搜索(A)-相关性

    文章:搜索相关性 文章:推荐系统中相似度算法介绍及效果测试 文章:常用的相似度计算方法原理及实现 文章:推荐系统用户相似度计算方法研究

  5. SPOJ ARCTAN

    POJ1183 除输入方式外与这道题完全一样 题目大意是给定一个a 求最小的满足arctan(1/A)=arctan(1/B)+arctan(1/C) 的B+C的最小值 根据上述递推规律,我们只要从2 ...

  6. android studio配置so文件路径

    将一个项目从eclipse上移植到android studio时,发现总是加载不成功库文件,so库文件放在了main/src/libs下的目录. 参考网上资料,studio默认的库文件路径是main/ ...

  7. Jquery EasyUI动态生成Tab

    function addTab(title, url) { if ($('#tt').tabs('exists', title)) { $('#tt').tabs('select', title); ...

  8. Java高概率面试题目—finally

    在Java面试中关于finally的面试题目出现的概率非常高,而且一旦面试官问起绝不会是蜻蜓点水,而是会向你发起层层递进地“连环问”,并且回答这系列问题常常需要代码的辅助,可谓考验基础的面试利题.究竟 ...

  9. Uva - 11181 Probability|Given (条件概率)

    设事件B为一共有r个人买了东西,设事件Ai为第i个人买了东西. 那么这个题目实际上就是求P(Ai|B),而P(Ai|B)=P(AiB)/P(B),其中P(AiB)表示事件Ai与事件B同时发生的概率,同 ...

  10. 选择器(E:hover/E:active/E:focus的使用)

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...