【问题描述】定义一个车(vehiele)基类,有Run、Stop等成员函数;
由此派生出自行车(bicycle)类、汽车(motorcar)类;
从bicycle和motorcar派生出摩托车(motorcycle)类;它们都有Run、Stop等成员函数。
定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run();再分别用vehicle类型的指针来调用这几个对象的成员函数Run()。
【样例输出】
vehicle run!
bicycle run!
motorcar run!
motorbicycle run!
vehicle run!
bicycle run!
motorcar run!
motorbicycle run!
#include<iostream>
using namespace std;
class vehicle {
public:
virtual void run() {
std::cout << "vehicle run!" << std::endl;
}
};
class bicycle : virtual public vehicle {
public:
void run() {
std::cout << "bicycle run!" << std::endl;
}
};
class motorcar : virtual public vehicle {
public:
void run() {
std::cout << "motorcar run!" << std::endl;
}
};
class motobicycle : virtual public bicycle, virtual public motorcar {
public:
void run() {
std::cout << "motorbicycle run!" << std::endl;
}
};
int main() {
vehicle v1;
v1.run();
bicycle b1;
b1.run();
motorcar m1;
m1.run();
motobicycle mb1;
mb1.run();
vehicle *p1;
p1 = &v1;
p1->run();
p1 = &b1;
p1->run();
p1 = &m1;
p1->run();
p1 = &mb1;
p1->run();
return 0;
}