类的继承-多态-vehicle类/CStereoShape类/employee类

题目如下:
定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,run、stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。否则会有什么问题? 要求写出所有类的构造函数(带参数的),拷贝构造函数和析构函数,并在这些函数中输出测试语句,以便观察他们的执行顺序。
思路如下:
1、 编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle设置为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main中测试这个类。
2、 编译成功后,把vehicle类设置为非虚基类,再编译一次,此时系统报错,无法编译成功。因为若不把vehicle类设置为虚基类,会出现二义性错误,程序不能成功编译。
代码如下:

/*定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,run、stop等成员函数,
由此派生出自行车(bicycle)类、汽车(motorcar)类。
自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。
从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。否则会有什么问题? 
要求写出所有类的构造函数(带参数的),拷贝构造函数和析构函数,
并在这些函数中输出测试语句,以便观察他们的执行顺序。*/
#include<iostream>
using namespace std;

//以下是vehicle基类的实现
class vehicle
{
   
protected:
	float MaxSpeed;
	float weight;
public:
~vehicle(){
   }
vehicle(float m,float w):MaxSpeed(m),weight(w){
   } 
virtual void Run ()
{
   
cout<<"MaxSpeed:"<<MaxSpeed<<endl;
cout<<"weight:"<<weight<<endl;
cout<<endl;
}
virtual void Stop ()
{
   
cout<<"vehicle已经停啦!!!"<<endl;
}

};
//以下是bicycle类的实现
class bicycle: virtual public vehicle//虚基类vehicle
//class bicycle: public vehicle//虚基类vehicle
{
   
protected:
	float Height;
public:
~bicycle(){
   }
bicycle(float m,float w,float h):vehicle(m,w),Height(h){
   }
void Run ()
{
   
cout<<"MaxSpeed:"<<MaxSpeed<<endl;
cout<<"weight:"<<weight<<endl;
cout<<"The height of bicycleis:"<<Height<<endl;
cout<<endl;
}
void Stop ()
{
   
cout<<"bicycle已经停啦!!!"<<endl;
}

};
//以下是motorcar类的实现
class motorcar: virtual public vehicle//虚基类vehicle
//class motorcar:public vehicle
{
   
protected:
	int SeatNum;
public:
~motorcar(){
   }
motorcar(float m,float w,float s):vehicle(m,w),SeatNum(s){
   }
void Run ()
{
   
cout<<"MaxSpeed:"<<MaxSpeed<<endl;
cout<<"weight:"<<weight<<endl;
cout<<
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值