定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。
时间: 2024-04-30 15:19:21 浏览: 97
用c++ 定义一个车(Vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)
下面是一个简单的实现:
```cpp
#include <iostream>
using namespace std;
class Vehicle {
public:
virtual void Run() {
cout << "Vehicle is running." << endl;
}
virtual void Stop() {
cout << "Vehicle stopped." << endl;
}
};
class Bicycle : public Vehicle {
public:
void Run() override {
cout << "Bicycle is running." << endl;
}
void Stop() override {
cout << "Bicycle stopped." << endl;
}
};
class Motorcar : public Vehicle {
public:
void Run() override {
cout << "Motorcar is running." << endl;
}
void Stop() override {
cout << "Motorcar stopped." << endl;
}
};
class Motorcycle : public Bicycle, public Motorcar {
public:
void Run() override {
cout << "Motorcycle is running." << endl;
}
void Stop() override {
cout << "Motorcycle stopped." << endl;
}
};
int main() {
Vehicle *v;
Bicycle b;
Motorcar m;
Motorcycle mc;
v = &b;
v->Run();
v->Stop();
v = &m;
v->Run();
v->Stop();
v = &mc;
v->Run();
v->Stop();
return 0;
}
```
在这个例子中,我们定义了一个基类 `Vehicle`,它有两个虚函数 `Run` 和 `Stop`。然后我们又定义了两个派生类 `Bicycle` 和 `Motorcar`,它们都继承了 `Vehicle`,并且重写了 `Run` 和 `Stop` 函数。接着我们定义了一个 `Motorcycle` 类,它同时继承了 `Bicycle` 和 `Motorcar`,因此它也继承了 `Vehicle`,并且重写了 `Run` 和 `Stop` 函数。
在 `main` 函数中,我们定义了一个指向 `Vehicle` 的指针 `v`,然后分别让它指向 `Bicycle`、`Motorcar` 和 `Motorcycle` 的对象,调用它们的 `Run` 和 `Stop` 函数。
由于 `Vehicle` 的 `Run` 和 `Stop` 函数都是虚函数,因此它们可以被子类重写,并且通过指向子类对象的基类指针调用时,会根据实际指向的对象来动态调用相应的函数。这就是虚函数的作用。
阅读全文