#include "source.h" int main() { Vehicle *vehicle; Car car(100); Truck truck(200); Bus bus(300); vehicle = &car; vehicle->run(); vehicle = &truck; vehicle->run(); vehicle = &bus; vehicle->run(); return 0; } 假设我们有一个基类Vehicle,它有一个纯虚函数run()。然后有两个派生类Car和Truck,以及一个继承自Car和Truck的类Bus。请写出它们的实现代码,使得在主函数中定义一个Vehicle指针指向Car、Truck或Bus的对象时,可以调用run()函数并能正确输出汽车的行驶距离。 Sample_Input Sample_Ouput Car running 100 kilometers. Truck running 200 kilometers. Bus running 300 kilometers.
时间: 2024-01-05 12:03:02 浏览: 32
以下是相应的实现代码:
```c++
#include <iostream>
class Vehicle {
public:
virtual void run() = 0;
};
class Car : public Vehicle {
private:
int distance;
public:
Car(int d) : distance(d) {}
virtual void run() {
std::cout << "Car running " << distance << " kilometers." << std::endl;
}
};
class Truck : public Vehicle {
private:
int distance;
public:
Truck(int d) : distance(d) {}
virtual void run() {
std::cout << "Truck running " << distance << " kilometers." << std::endl;
}
};
class Bus : public Car, public Truck {
public:
Bus(int d) : Car(d), Truck(d) {}
virtual void run() {
std::cout << "Bus running " << Car::distance << " kilometers." << std::endl;
}
};
int main() {
Vehicle *vehicle;
Car car(100);
Truck truck(200);
Bus bus(300);
vehicle = &car;
vehicle->run();
vehicle = &truck;
vehicle->run();
vehicle = &bus;
vehicle->run();
return 0;
}
```
输出结果为:
```
Car running 100 kilometers.
Truck running 200 kilometers.
Bus running 300 kilometers.
```