声明一个车( vehicle )基类,具有 MaxSpeed 、 Weight 等成员变量, Run 、 Stop 等成函数,由此派生出自行车( bicycle )类、汽车( motorcar )类。自行车( bicycle )类有高 ( Height )等属性,汽车( motorcar )类有座位数( SeatNum )等属性。从 bicycle 和 motorcar 生出摩托车( motorcycle )类,在继承过程中,注意把 vehicle 设置为虚基类。
时间: 2023-12-03 12:45:55 浏览: 132
以下是代码实现:
```cpp
class vehicle {
protected:
int MaxSpeed;
int Weight;
public:
virtual void Run() {}
virtual void Stop() {}
};
class bicycle : virtual public vehicle {
protected:
int Height;
public:
bicycle(int ms, int w, int h) : vehicle(), MaxSpeed(ms), Weight(w), Height(h) {}
};
class motorcar : virtual public vehicle {
protected:
int SeatNum;
public:
motorcar(int ms, int w, int sn) : vehicle(), MaxSpeed(ms), Weight(w), SeatNum(sn) {}
};
class motorcycle : public bicycle, public motorcar {
public:
motorcycle(int ms, int w, int h, int sn) : vehicle(), bicycle(ms, w, h), motorcar(ms, w, sn) {}
};
```
在这个实现中,我们首先定义了一个车(vehicle)基类,它有最大速度(MaxSpeed)和重量(Weight)属性,以及运行(Run)和停止(Stop)方法。
然后,我们定义了自行车(bicycle)和汽车(motorcar)类,它们都从车类派生而来。自行车类有高度(Height)属性,汽车类有座位数(SeatNum)属性。
最后,我们定义了摩托车(motorcycle)类,它同时继承自自行车和汽车类。在继承过程中,我们使用了虚基类(virtual base class)的概念,这样可以避免出现重复的vehicle类成员。我们在摩托车的构造函数中调用了自行车和汽车的构造函数,并传递了必要的参数。
这个实现中,我们没有对Run和Stop方法做任何实现,因为这些方法在不同的车辆中有不同的行为。我们只是定义了这些方法的接口,具体的实现可以在子类中完成。
阅读全文