编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数
时间: 2024-03-23 15:36:40 浏览: 50
好的,这里是一个符合要求的程序:
```cpp
#include <iostream>
using namespace std;
class Vehicle {
public:
virtual void Run() {
cout << "Vehicle is running..." << endl;
}
virtual void Stop() {
cout << "Vehicle stops." << endl;
}
};
class Bicycle : public Vehicle {
public:
virtual void Run() {
cout << "Bicycle is running..." << endl;
}
virtual void Stop() {
cout << "Bicycle stops." << endl;
}
};
class Motorcar : public Vehicle {
public:
virtual void Run() {
cout << "Motorcar is running..." << endl;
}
virtual void Stop() {
cout << "Motorcar stops." << endl;
}
};
class Motorcycle : public Bicycle, public Motorcar {
public:
virtual void Run() {
cout << "Motorcycle is running..." << endl;
}
virtual void Stop() {
cout << "Motorcycle stops." << endl;
}
};
int main() {
Vehicle v;
Bicycle b;
Motorcar m;
Motorcycle mc;
v.Run();
v.Stop();
b.Run();
b.Stop();
m.Run();
m.Stop();
mc.Run();
mc.Stop();
Vehicle* pv = &v;
pv->Run();
pv->Stop();
pv = &b;
pv->Run();
pv->Stop();
pv = &m;
pv->Run();
pv->Stop();
pv = &mc;
pv->Run();
pv->Stop();
return 0;
}
```
这个程序定义了一个基类Vehicle,并在其基础上派生出自行车Bicycle和汽车Motorcar类。在Bicycle和Motorcar的基础上再派生出摩托车Motorcycle类。
在Vehicle、Bicycle、Motorcar和Motorcycle类中,都重载了Run和Stop成员函数,并将它们定义为虚函数。
在main函数中,我们创建了Vehicle、Bicycle、Motorcar和Motorcycle的对象,并分别调用它们的Run和Stop成员函数。然后又使用Vehicle类型的指针来调用这些对象的成员函数,观察它们的执行情况。
希望这个程序可以帮助你理解基类和派生类的概念,以及虚函数的作用。
阅读全文