为了账号安全,请及时绑定邮箱和手机立即绑定

虚析构函数感觉多余了 C++规则

就是不搞懂,制定C++规则的的人,这样规定,无论是子类或是父类,只要调用了该类的构造函数,最后系统必须调用一次析构函数,这样不就不用虚析构函数了吗?

正在回答

1 回答

虚析构函数适用于如下这种情况:如果用new运算符开辟了一端空间,如果基类中有析构函数,且定义了一个指向该基类的指针变量。如果在释放这段内存时,只执行基类析构函数,而不执行继承类析构函数,就会造成内存泄漏,所以要采用虚析构函数。

0 回复 有任何疑惑可以回复我~
#1

慕UI8711183 提问者

你没有正面回答问题,总之虚析构函数存在的目的就是防止内存泄露,如果按照新的语法规则不会造成内存泄露,那么虚析构函数就没有存在的必要了,是吧? --------------- 如果编译器这样规定,只要调用了该类的构造函数,编译器自动调用一次析构函数,这样不就不用虚析构函数了吗?
2016-08-06 回复 有任何疑惑可以回复我~
#2

慕后端7037387 回复 慕UI8711183 提问者

怎么可能让编译器自动调用,我们考虑的是动态多态,即运行时决策,而非编译时决策;况且我调用该类的构造函数,是创建了该类的对象,你又要自动调用析构函数,把这个对象释放掉,这是什么意思?我这个对象什么时候用完,只能我(程序)自己在运行时释放掉,
2017-04-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66236    人
  • 解答问题       314    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

虚析构函数感觉多余了 C++规则

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信