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. LCS以及输出路径模板

    记忆 两个for用来寻找LCS,DP是二维的,每一维代表了字符串的长度. 寻找的代码部分 if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][ ...

  2. [笔记] APIO 2018 Day1

    计算折纸 computaional origami 全息算法(???) margulis napkin problem 素数里有任意长的等差数列 xor gate Σxi or gate(exact ...

  3. Python 1-2模块的循环导入问题

    run.py文件: import m1 # 第一次导入 # 验证解决方案一: ''' 正在导入m1 正在导入m2 ''' # print(m1.x) # print(m1.y) # 验证解决方案二: ...

  4. Java 读取linux上的文件

    今天遇到一个问题,在Windows环境上开发,测试环境和正式环境服务器都是linux: 一个导出表格的功能,在本地没问题,发布到linux服务器就报找不到文件问题,但是模板文件已经在linux下了.刚 ...

  5. Python之协程函数

    Python之协程函数 什么是协程函数:如果一个函数内部yield的使用方法是表达式形式的话,如x=yield,那么该函数成为协程函数. def eater(name): print('%s star ...

  6. 如何设置路由器的MTU

    前几天搞了个ER-X,总觉得没有发挥其最大的能力.今天查了下如何设置MTU,罗列如下,备忘. 1. 目前都是PPPOE,这个不管网络如何复杂,均不要在路由后面计算封包大小.正确的是电脑直接连猫,直接拔 ...

  7. 易接SDK ios9以上无法弹出充值界面的一种情况

    充值需要用到http请求: 打开info.plist, 在app tansport security  setting 这个项 ,  加入  NSAllowsArbitraryLoads YES

  8. 【BZOJ2440】完全平方数(莫比乌斯函数,容斥原理)

    题意:求第k个无平方因子数 k<=10^9 思路: 感觉这东西和欧拉筛差不多……活到老学到老,退役前学点新知识也是好的 为什么二分答案的上界是2*n?连LYY都证不出来 话说约大爷一年之前就已经 ...

  9. c#中的委托和事件详细学习【分6页学习】

    原文发布时间为:2008-11-01 -- 来源于本人的百度文章 [由搬家工具导入] 在本文中我首先通过一个GreetingPeople的小程序向大家介绍了委托的概念、委托用来做什么,随后又引出了事件 ...

  10. 用jQuery向div中添加Html文本内容

    前台代码: <link href="http://www.cnblogs.com/Content/themes/base/jquery-ui.css" rel="s ...