析构函数为什么能释放对象内存?

析构函数里什么操作语句也没有,为什么就能释放对象内存呢?... 析构函数里什么操作语句也没有,为什么就能释放对象内存呢? 展开
 我来答
神雕侠之父
推荐于2017-09-24 · 超过14用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:0
展开全部
析构函数(destructor) 与构造函数相反,,构造函数是新建对象时自动调用,而析构函数则是当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
析构函数里什么操作语句也没有,为什么就能释放对象内存呢? 这话有问题,应该是在推出前用delete释放内存,不能自动释放
吴建涛
2010-10-05 · TA获得超过117个赞
知道小有建树答主
回答量:132
采纳率:0%
帮助的人:151万
展开全部
析构函数不能释放对象内存,只是析构函数中可以释放一些这个对象所占有的资源(包括内存),这是要靠你自己写程序完成的,不能自动完成,而C++在需要收回这个对象所占有的内存的时候会调用析构函数,但是C++自己是不会收回该对象申请的动态内存的,也就是new出来的内存,所以一般要考程序员自己在析构函数中完成释放。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
琉璃易碎smile
推荐于2017-09-06 · TA获得超过1.6万个赞
知道大有可为答主
回答量:4789
采纳率:92%
帮助的人:305万
展开全部
关于析构函数的说明:
1.当程序的执行离开实例化自动对象所在的作用域时,自动对象就会撤销,这时析构函数隐式调用.并不是说在main函数结束时才执行。
2.析构函数本身并不释放对象占用的内存空间,它只是在系统收回对象的内存空间之前执行扫尾工作.析构函数体内并不一定要有delete语句。可以有也可以没
3.和构造函数一样,每个类都有一个析构函数,即使没有显式提供一个析构函数,编译器也会生成一个空的析构函数 .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式