20、C++ 中虚函数实现多态性与相关应用

C++ 中虚函数实现多态性与相关应用

1. 多态性与虚函数的引入

在实际应用里,我们常常需要把一些相似的实例归为一组进行统一处理。以大学计费系统为例,学校希望将所有学生(不管是哪种派生类类型)集中起来,统一计算他们的学期费用。为了实现这个功能, Student 类可以有一个多态操作 CalculateSemesterBill() ,它在 Student 类中被实现为虚函数,并带有默认方法。不过,像 GraduateStudent 这样的派生类,可能会有更合适的实现方式,通过在自己的类中重写这个操作来提供特定的方法。

我们可以创建一个 Student 类型的指针集合,每个指针会指向派生类类型的实例,比如 GraduateStudent UnderGraduateStudent NonDegreeStudent 。当派生类实例以这种方式被泛化后,就可以对这个集合应用基类中定义的函数(通常是虚函数)。虚函数能让这些泛化的实例调用多态操作,从而执行各自派生类的方法。

2. 虚析构函数的使用

把派生类实例按基类类型存储在一个集合中是很有用的。但当通过基类指针存储的派生类实例的内存被释放时,就会出现一个问题:调用的是哪个析构函数呢?实际上,会调用一系列的析构函数,从当前对象类型的析构函数开始。然而,如果实例是通过基类指针存储的,我们怎么知道它实际的派生类对象类型呢?虚析构函数就能解决这个问题。

将析构函数

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值