用c++ 定义一个车(Vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)类,从bicycle和 motorcar派生出摩托车(motorcycle)类,他们都有Run,Stop等成员函数。编写完整并用主函数测试。体会虚基类的使用
时间: 2024-02-19 18:03:50 浏览: 79
用c++ 定义一个车(Vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)
好的,以下是代码实现:
```c++
#include<iostream>
using namespace std;
//定义车(Vehicle)基类
class Vehicle{
public:
virtual void Run()=0; //跑的虚函数
virtual void Stop()=0; //停止的虚函数
};
//自行车(bicycle)类
class Bicycle:virtual public Vehicle{ //虚继承
public:
void Run(){
cout << "自行车正在运行" << endl;
}
void Stop(){
cout << "自行车停止运行" << endl;
}
};
//汽车(motorcar)类
class Motorcar:virtual public Vehicle{ //虚继承
public:
void Run(){
cout << "汽车正在运行" << endl;
}
void Stop(){
cout << "汽车停止运行" << endl;
}
};
//摩托车(motorcycle)类
class Motorcycle:public Bicycle, public Motorcar{
public:
void Run(){
cout << "摩托车正在运行" << endl;
}
void Stop(){
cout << "摩托车停止运行" << endl;
}
};
//主函数测试
int main(){
Motorcycle m;
m.Run();
m.Stop();
return 0;
}
```
通过虚基类的使用,我们可以避免多次继承导致基类的成员变量被复制多次的问题,从而减少内存的浪费。以上代码中,Bicycle和Motorcar都虚继承自Vehicle类,而Motorcycle继承自Bicycle和Motorcar,从而避免了Vehicle类成员变量的多次复制。
以上代码输出结果如下:
```
摩托车正在运行
摩托车停止运行
```
可以看到,程序正确输出了运行和停止的信息。
阅读全文