首页 > 编程语言 > 详细

C++虚析构函数

时间:2019-02-13 20:54:12      阅读:115      评论:0      收藏:0      [点我收藏+]

C++虚析构函数

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

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

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

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

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

技术分享图片

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

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

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

结论

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

基类构造函数切记为虚

 

C++虚析构函数

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!