条款7:为多态基类析构函数声明为virtual

Posted 弗莱曼飞侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了条款7:为多态基类析构函数声明为virtual相关的知识,希望对你有一定的参考价值。

基类指针指向子类对象。

子类对象必须位于堆。因此为了避免泄漏内存资源,当指针不使用时,delete掉每一个对象非常重要。
但是如果基类的析构函数不声明为virtual。那么指向子类对象的指针delete时,析构掉的成分都是基类的,而子类的成分没有被识别出来,而未被析构掉。这样就造成资源浪费。
给基类析构函数声明为virtual,那么delete对象时,就会是你希望的那样,它会销毁整个对象,包括所有继承类(drived class)的成分。
析构时调用顺序:先调用最深层次的派生类的析构函数,依次向上调用base类的析构,最后调用最先定义的基类的析构函数。

以上是关于条款7:为多态基类析构函数声明为virtual的主要内容,如果未能解决你的问题,请参考以下文章

浅谈多态基类析构函数声明为虚函数

浅谈多态基类析构函数声明为虚函数

NO.6: 为多态基类声明virtual析构函数

析构函数 声明为protected

警告: deleting object of polymorphic class type which has non_virtual destructor

改善程序与设计的55个具体做法 day3