5.1多态性概述:

按实施的机制,多态可以分为两类:


虚函数的定义:
(前面思维是虚基类,别搞混了)

运行时多态的条件:

运行时的多态:
基类中有show(),派生类中也有show()。都定义为虚函数
运行时才知道s4指向c, c 时circle类型的,所以才会调用circle中的show()
运行时多态
5.2虚析构函数:

虚的析构函数
没有释放继承类申请的空间
pb是base 的指针,所以delete pb时只会释放基类的空间。
解决方法:
将两个析构函数都定义为虚的。
派生类的空间被释放。

5.3纯虚函数和抽象类
在基类中定义的area()函数,只是为了后面提供一个统一的接口,实现多态。
不需要有函数体。
当调用getArea()时,根据传进去的参数,多态的选择调用那个类中的area()。
派生类定义后,才能进行调用,有纯虚函数的类称为抽象类,抽象类不能实例化对象

本文介绍了多态性的两种主要类型,基于虚函数的运行时多态,强调了虚函数在实现动态绑定中的作用,以及虚析构函数对于正确释放继承类内存的重要性。同时,阐述了纯虚函数如何创建抽象类,提供统一接口,但抽象类不能被实例化。










606

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



