编写程序,计算汽车运行的时间,首先建立基类car,其中含有数据成员distance存储两点间的距离。假定距离以英里计算,速度为每小时80英里,使用虚函数travel_time()计算并显示通过这段距离的时间。
在派生类kilometre中,假定距离以千米计算,速度以每小时120千米,使用函数travel_time()计算并显示通过这段距离的时间。
#include<iostream>
using namespace std;
class car {
public:
car () { //基类构造函数,输入行车距离(单位未定)
cout << "Please enter the driving distance(The unit is pending!):\n";
cin >> distance ;
}
virtual void travel_time() { //虚函数,以英里为单位且时速80计算行车时间
cout << "At 80 miles per hour:" << distance / 80 << endl;
};
protected: //派生类的distance成员构造时会调用基类的构造函数
double distance;
};
class kilometer :public car {
public:
virtual void travel_time() { //虚函数,以千米为单位且时速120计算行车时间
cout << "At 120 kilometer per hour:" << distance / 120 << endl;
}
};
int main() {
car bus; //建立基类对象bus
kilometer taxi; //派生类对象taxi
car *index = &bus; //定义指向基类对象的指针index,指向bus
index->travel_time(); //调用了基类对象bus的travel_time函数
index = &taxi; //指向派生类的对象taxi
index->travel_time(); //调用了派生类对象taxi的travel_time函数
return 0;
}
运行结果(两个对象的输入均为960)⬇