条款7:为多态基类析构函数声明为virtual
Posted 弗莱曼飞侠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了条款7:为多态基类析构函数声明为virtual相关的知识,希望对你有一定的参考价值。
基类指针指向子类对象。
子类对象必须位于堆。因此为了避免泄漏内存资源,当指针不使用时,delete掉每一个对象非常重要。
但是如果基类的析构函数不声明为virtual。那么指向子类对象的指针delete时,析构掉的成分都是基类的,而子类的成分没有被识别出来,而未被析构掉。这样就造成资源浪费。
给基类析构函数声明为virtual,那么delete对象时,就会是你希望的那样,它会销毁整个对象,包括所有继承类(drived class)的成分。
析构时调用顺序:先调用最深层次的派生类的析构函数,依次向上调用base类的析构,最后调用最先定义的基类的析构函数。
以上是关于条款7:为多态基类析构函数声明为virtual的主要内容,如果未能解决你的问题,请参考以下文章
警告: deleting object of polymorphic class type which has non_virtual destructor