多态机制中为什么子类的虚构函数没有执行

首先我们知道多态机制就是处理类继承时使用同名的函数不会出错,今天碰到一个有意思的问题。

为什么子类的虚构函数没有执行?
这里子类Son 是继承Father 类的,当删除父类对象时首先会调用子类的析构函数再调用父类的析构函数。

神奇的一幕发生了:
为什么子类的虚构函数没有执行?

为什么没有执行子类的析构函数?
如果基类指针指向的是基类对象,那么只调用基类的析构函数,如果基类指针指向的是子类对象,那么先调用子类的析构函数,再调用父类的析构函数。

为了防止子类的析构函数没有执行,我们把父类的析构函数,定义为virtual 虚函数。
// 如果对 Father类的指针使用delete操作时,
// 就会对该指针使用“动态析构”:
// 如果这个指针,指向的是子类对象,
// 那么会先调用该子类的析构函数,再调用自己类的析构函数

为了防止内存泄漏,最好是在基类析构函数上添加virtual关键字,使基类析构函数为虚函数

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-09
  • 2022-01-21
  • 2021-11-07
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-29
  • 2021-06-13
  • 2021-11-26
  • 2022-12-23
相关资源
相似解决方案