c++ 定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自 行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类。
时间: 2024-02-09 07:09:32 浏览: 80
好的,以下是一个基本的 C++ 实现:
```c++
#include <iostream>
using namespace std;
class Vehicle {
public:
Vehicle(int max_speed, int weight) : max_speed(max_speed), weight(weight) {}
void run() {
cout << "Vehicle is running." << endl;
}
void stop() {
cout << "Vehicle has stopped." << endl;
}
protected:
int max_speed;
int weight;
};
class Bicycle : public Vehicle {
public:
Bicycle(int max_speed, int weight, int height) : Vehicle(max_speed, weight), height(height) {}
protected:
int height;
};
class Motorcar : public Vehicle {
public:
Motorcar(int max_speed, int weight, int seat_num) : Vehicle(max_speed, weight), seat_num(seat_num) {}
protected:
int seat_num;
};
class Motorcycle : public Bicycle, public Motorcar {
public:
Motorcycle(int max_speed, int weight, int height, int seat_num) : Bicycle(max_speed, weight, height), Motorcar(max_speed, weight, seat_num) {}
};
```
在这个实现中,我们定义了一个基类 `Vehicle`,它有 `max_speed` 和 `weight` 两个属性,以及 `run` 和 `stop` 两个方法。然后我们分别定义了 `Bicycle` 和 `Motorcar` 两个子类,它们都继承了 `Vehicle`。在 `Bicycle` 类中,我们增加了 `height` 属性。在 `Motorcar` 类中,我们增加了 `seat_num` 属性。
最后,我们定义了一个 `Motorcycle` 类,它同时继承了 `Bicycle` 和 `Motorcar`。这个类的初始化方法中,我们分别调用了 `Bicycle` 和 `Motorcar` 的初始化方法,来初始化所有的属性。
请注意,在 C++ 中,我们使用关键字 `public`、`protected` 和 `private` 来表示继承的访问权限。在这个实现中,我们将 `Bicycle` 和 `Motorcar` 的继承方式都设置为 `public`,以便让 `Motorcycle` 类可以同时继承它们的属性和方法。
阅读全文