码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-05-22 17:55:02      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:派生   内存   避免   就会   是你   依次   包括   base   资源   

基类指针指向子类对象。

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

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

标签:派生   内存   避免   就会   是你   依次   包括   base   资源   

原文地址:http://www.cnblogs.com/Burgess-Fan/p/6890344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!