C++ 中虚函数实现多态性与相关应用
1. 多态性与虚函数的引入
在实际应用里,我们常常需要把一些相似的实例归为一组进行统一处理。以大学计费系统为例,学校希望将所有学生(不管是哪种派生类类型)集中起来,统一计算他们的学期费用。为了实现这个功能, Student 类可以有一个多态操作 CalculateSemesterBill() ,它在 Student 类中被实现为虚函数,并带有默认方法。不过,像 GraduateStudent 这样的派生类,可能会有更合适的实现方式,通过在自己的类中重写这个操作来提供特定的方法。
我们可以创建一个 Student 类型的指针集合,每个指针会指向派生类类型的实例,比如 GraduateStudent 、 UnderGraduateStudent 和 NonDegreeStudent 。当派生类实例以这种方式被泛化后,就可以对这个集合应用基类中定义的函数(通常是虚函数)。虚函数能让这些泛化的实例调用多态操作,从而执行各自派生类的方法。
2. 虚析构函数的使用
把派生类实例按基类类型存储在一个集合中是很有用的。但当通过基类指针存储的派生类实例的内存被释放时,就会出现一个问题:调用的是哪个析构函数呢?实际上,会调用一系列的析构函数,从当前对象类型的析构函数开始。然而,如果实例是通过基类指针存储的,我们怎么知道它实际的派生类对象类型呢?虚析构函数就能解决这个问题。
将析构函数
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



