码迷,mamicode.com
首页 > 编程语言 > 详细

C++虚析构函数

时间:2019-02-13 21:18:40      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:构造   http   png   demo   策略   基类   c++   不同   父类   

C++虚析构函数

析构函数是用来释放对象所申请的资源的函数。 当类内没有自定义的析构函数时,系统会自动调用默认的析构函数。

那么析构函数能否为虚函数呢?

虚函数的意义在于实现“多态性”。即:不同的个体(派生类),实行(运行)不同的方法或策略。这样说来,析构函数本就可以是“虚”的。

那么,虚的析构函数的意义在哪里呢?

当一个类是既无父类又无派生类时,姑且称他为“孤独类”吧!并没有什么影响,编译器也不会报错。demo见下图例子:

技术图片

但是,当此类为基类时,就要多加注意了!我们知道,虚函数是动态绑定,即运行时多态。析构时,子类先调用自己的析构函数,再调用父类的析构函数。

当父类(基类)的析构函数不为虚时,发生静态绑定,即编译时,指针绑定为父类指针,调用析构函数时,就只调用基类析构函数,子类(派生类)的析构函数不会被调用,会发生内存泄漏!!!

(这里就不上效果图了,大致就是,不断调用父类析构函数,内存泄漏了......)

结论

C++函数析构函数可以为虚

基类构造函数切记为虚

 

C++虚析构函数

标签:构造   http   png   demo   策略   基类   c++   不同   父类   

原文地址:https://www.cnblogs.com/yocichen/p/10371640.html

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