c++基础-动态多态性,以car为基类,根据距离单位不同的两个类分别计算汽车运行时间

编写程序,计算汽车运行的时间,首先建立基类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)⬇
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C++面向对象中的多态性是指同一种型的对象在不同的情况下表现出不同的行为。这种多态性可以通过虚函来实现。 在C++中,虚函是指在基类中声明的函,在派生中可以被重写,从而实现不同的行为。当使用基类指针或引用调用虚函时,实际调用的是派生中重写的函,而不是基类中的函。 通过使用虚函,可以实现运行多态性,即在程序运行时才确定调用哪个函,而不是在编译时确定。这种多态性可以提高程序的灵活性和可扩展性,使得程序更加易于维护和扩展。 总之,C++面向对象中的多态性和虚函是非常重要的概念,对于理解和使用C++的面向对象特性非常有帮助。 ### 回答2: 在面向对象编程中,多态性是指同一种操作,针对不同的对象可以产生不同的行为。这种特性可以提升程序的灵活性和扩展性。多态性和虚函多态性的实现手段。 在C++中,通过派生继承基类并重写基类的虚函,可以实现多态性基类中的虚函可以被派生重写,如果以基类的指针或引用调用该虚函,将自动调用对应的派生的函。这种方法可以把不同的派生视为基类,实现了同一个操作产生不同结果的效果。 举个例子,假设我们有一个基类Animal和两个派生Dog和Cat,他们都重写了基类的eat()虚函。如果我们用基类指针来调用这个函,程序会自动根据实际指向的对象调用对应的eat()函,而不需要对每个派生分别编写对应的函。 虚函也可以用来实现动态绑定。动态绑定的意思是在运行时决定要调用哪个函,而不是在编译期就确定。这种方法可以大大提升程序的灵活性,因为在编译时不需要知道实际需要调用哪个函,而是在运行动态决定。这种方法也可以用来实现回调函动态功能。 总之,多态性和虚函是面向对象编程中非常重要的机制,通过它们可以实现型的扩展和动态绑定。掌握这些技术可以让代码更易于维护和扩展,提高编程效率和代码的质量。 ### 回答3: 面向对象编程中,多态性是一种非常重要的概念。它允许我们使用不同的方式来处理不同型的据,使得程序具有更高的灵活性和可维护性。在C++中,多态性是通过虚函实现的。 虚函是一个在基类中定义的函,它允许子覆盖它并提供自己的实现。这意味着无论是基类指针还是子指针,都可以调用虚函,而程序会根据对象的实际型来调用正确的实现。 例如,我们可以定义一个基类Shape和两个Circle和Square。每个子都可以覆盖Shape中的虚函calculateArea()。然后,我们可以使用Shape指针来调用calculateArea(),无论它指向Circle还是Square,程序都会正确地调用相应的实现。 这种多态性非常有用,因为它允许我们编写更通用的代码。我们可以在程序中使用基类指针,而不需要知道实际对象的型。这使得代码更加模块化,易于扩展和维护。 需要注意的是,虚函的实现是动态绑定的。这意味着程序只能在运行时确定要调用的实现,而不是在编译时。因此,虚函对程序的性能有一定的影响,尤其是当涉及到大量的虚函调用时。 总体来说,多态性和虚函是面向对象编程中的重要概念,它们允许我们编写更灵活、可维护和可扩展的代码。我们需要权衡性能和灵活性之间的权衡,并确保正确地使用和维护虚函,以实现最佳效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值