五一期间游客出行,有多种交通工具可以选择,其中,自行车行驶速度为0.2km/min;地铁行驶速度为0.5km/min,每行驶2km经过一个地铁站,并在站台停靠2min。 (1)请构造一个Vehicle基类(10分),要求包含: 数据成员: double speed;//交通工具的速度和km/min double distance;//目的地的距离 km; 成员函数: 自行设计构造函数完成初始化; double TimeSpend();//用来计算到达目的地所用时间 (2)由Vehicle类派生出Bicycle和Subway两个类,要求包含: 成员函数: Bicycle和Subway两个派生类设计构造函数完成初始化; Bicycle和Subway两个派生类用TimeSpend函数计算不同的交通工具到达目的地所用时间,并输出计算结果(一个类20分)。 (3)算例: 自行车:0.2km/min,目的地距离10km,到达目的地用时50min。 地铁:0.5km/min,目的地距离10km,到达目的地用时28min。
时间: 2024-02-18 17:03:02 浏览: 136
下面是一个符合要求的Vehicle、Bicycle和Subway的实现:
```cpp
#include <iostream>
class Vehicle {
public:
Vehicle(double speed, double distance) : speed_(speed), distance_(distance) {}
virtual double TimeSpend() = 0;
protected:
double speed_; // km/min
double distance_; // km
};
class Bicycle : public Vehicle {
public:
Bicycle(double distance) : Vehicle(0.2, distance) {}
double TimeSpend() override { return distance_ / speed_; }
};
class Subway : public Vehicle {
public:
Subway(double distance) : Vehicle(0.5, distance) {}
double TimeSpend() override { return distance_ / speed_ + 2 * (distance_ / 2) / speed_ + 2; }
};
int main() {
Bicycle bicycle(10);
std::cout << "Bicycle time spend: " << bicycle.TimeSpend() << " min" << std::endl;
Subway subway(10);
std::cout << "Subway time spend: " << subway.TimeSpend() << " min" << std::endl;
return 0;
}
```
在这个实现中,Vehicle类是一个抽象基类,它包含了交通工具的速度和目的地距离。由于TimeSpend函数的实现是不同的,因此它是一个纯虚函数,需要在派生类中进行实现。
Bicycle和Subway两个派生类分别实现了TimeSpend函数,并用不同的速度计算到达目的地所需的时间。在Subway的TimeSpend函数中,除了距离和速度之外,还考虑了在站台停靠的时间。
在main函数中,我们分别创建了一个Bicycle对象和一个Subway对象,并调用它们的TimeSpend函数来计算到达目的地所需的时间。
阅读全文