虚函数与多态性

  • Post author:
  • Post category:其他


5.1多态性概述:

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

虚函数的定义:

(前面思维是


虚基类


,别搞混了)

运行时多态的条件:

运行时的多态:

基类中有show(),派生类中也有show()。都定义为虚函数



运行时


才知道s4指向c, c 时circle类型的,所以才会调用circle中的show()


运行时多态

5.2虚析构函数:

虚的析构函数

没有释放


继承类


申请的空间

pb是base 的指针,所以delete pb时只会释放基类的空间。

解决方法:

将两个析构函数都定义为虚的。

派生类的空间被释放。

5.3纯虚函数和抽象类


在基类中定义的area()函数,只是为了后面提供一个统一的接口,


实现多态




不需要有函数体。

当调用getArea()时,根据传进去的参数,多态的选择调用那个类中的area()。

派生类定义后,才能进行调用,

有纯虚函数的类称为抽象类,抽象类不能实例化对象



版权声明:本文为Neo_21原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。