本关任务:定义一个车(vehicle)基类,具有数据成员 maxspeed, weight(均为 int 型), 函数成员 run(), stop(),由此派生出自行车(bicycle)类、汽车(motorcar)类。其中, bicycle类新增数据成员高度(height), motorcar类新增数据成员座位数(seatnum)属性。再从 bicycle和 motorcar 派生出摩托车(motorcycle)类,并在主程序中测试这个类。(每个类都要求定义构造函数和析构函数) (提示: run(), stop()函数体,通过输出字符串 run, stop 简单模拟。 )预期输出: 高度:2 座位数量:7 正在启动中。 停下汽车!
时间: 2024-03-03 20:51:16 浏览: 75
好的,根据您的要求,我来为您编写这个车辆类的继承关系。以下是代码实现:
```c++
#include<iostream>
using namespace std;
class Vehicle{
public:
Vehicle(int m, int w):maxspeed(m), weight(w){}
virtual ~Vehicle(){}
virtual void run(){cout << "正在启动中。" << endl;}
virtual void stop(){cout << "停下汽车!" << endl;}
protected:
int maxspeed;
int weight;
};
class Bicycle:public Vehicle{
public:
Bicycle(int m, int w, int h):Vehicle(m, w), height(h){}
~Bicycle(){}
private:
int height;
};
class Motorcar:public Vehicle{
public:
Motorcar(int m, int w, int s):Vehicle(m, w), seatnum(s){}
~Motorcar(){}
private:
int seatnum;
};
class Motorcycle:public Bicycle, public Motorcar{
public:
Motorcycle(int m, int w, int h, int s):Bicycle(m, w, h), Motorcar(m, w, s){}
~Motorcycle(){}
};
int main(){
Motorcycle m(120, 200, 2, 7);
cout << "高度:" << m.Bicycle::height << endl;
cout << "座位数量:" << m.Motorcar::seatnum << endl;
m.run();
m.stop();
return 0;
}
```
以上代码中,`Vehicle`为车辆类的基类,包含了车辆的最大速度和重量属性,以及行驶和停止的函数。`Bicycle`和`Motorcar`分别为从`Vehicle`派生出的自行车和汽车类,新增了高度和座位数两个属性。`Motorcycle`则同时继承了`Bicycle`和`Motorcar`,表示了摩托车这一车辆类型。在`main`函数中,我们创建了一辆最大速度为120,重量为200,高度为2,座位数为7的摩托车,并输出了其高度和座位数属性。接着,我们测试了其行驶和停止的方法。
预期输出为:
```
高度:2
座位数量:7
正在启动中。
停下汽车!
```
阅读全文