【C++】多态 - 虚函数/虚析构函数以及虚函数表

本文介绍了C++中的多态性,强调了虚函数在解决多态问题中的关键作用。通过示例解释了虚函数如何确保正确调用子类的方法,以及虚析构函数对于避免内存泄漏的重要性。同时,提到了虚函数的一些限制和实现原理,包括虚函数表的存在以及在继承链中的变化。
摘要由CSDN通过智能技术生成

什么是多态:

指不同对象收到相同消息时或相同对象收到不同消息时产生不同的动作。

这里先说下为什么会用到虚函数:

以下面的程序为例:

 

这个程序中,Carp是Fish的继承类,而Carp中覆盖了Swim这个方法,在MakeFishSwim这个函数中,要使用Fish类的形参,而你将yourFish这个Carp类的实参传递给了这个函数,让他执行Swim这个函数,这会发生什么,上面的程序运行结果:

这说明了什么?说明在MakeFishSwim这个程序中,它定义它的形参是Fish类型的,虽然你将yourFish这个Carp类传到了它那里,它仍然认为yourFish是Fish类的,并调用了Fish类Swim。

显然我们的初衷并不是这样,是希望对应的类执行自己的方法,那怎么避免这种情况呢?这就需要虚函数了。

虚函数的定义很简单,直接在父类方法定义最前面加上关键字“virtual”即可!在父类这个函数前一定得加virtual,子类的话,可以不加,系统编译时候会帮忙加&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值