C++类中的析构函数重不重要啊? 建立类的时候一般需不需要建立一个析构函数?

在所有的类中有析构函数的类大约占百分之多少?如果不进行清理是不是会多占用内存?... 在所有的类中有析构函数的类大约占百分之多少?
如果不进行清理是不是会多占用内存?
展开
 我来答
pengyun1314123
2012-02-07 · TA获得超过1458个赞
知道小有建树答主
回答量:1049
采纳率:0%
帮助的人:526万
展开全部
析构函数很重要,但是一般小工程,使用默认的析构就够了,而且哪些资源都会在进程结束时自行释放。
说多占用内存的地方,怕只是怕你new了不delete而已,只有new没有delete才会造成内存浪费,其他的资源申请,一般会随对象产生而产生对象销毁而销毁。
你不加析构函数,其实c++编译器已经默认给了你一个析构函数。所以把你自己申请的管理好就可以了。很多事情不一定非要在析构里面做的。析构函数使用默认的就好。自己申请的自己在合适的时候就释放就对了。

回到主题。
1.你不用刻意去写一个析构函数,因为编译器会默认给你一个(隐藏的)析构函数。
2.资源应该在合理的时候自己去释放。new了一定要delete掉,malloc了一定要free掉。至于你放在哪里随你愿意,不必非要在析构里面。
3.无论你做了多少东西,对象销毁时,你所有浪费的资源都会销毁,唯一影响的只是对象存在时内存有点占用太多而已。对象销毁后对其他程序没有任何影响
更多追问追答
追问
默认的和自己写的有什么区别吗?
在大的工程里面经常要写析构函数?
一般的小工程如果不写析构函数是不是要在进程结束之后自动释放?如果进程不结束,他还会继续占用内存(默认的析构函数会不会在进程结束之前将其释放)?
追答
大工程里,我可以这样说,我从来只用默认的。你一个对象建立后,你自己new的内存你肯定要在不用时第一时间就释放掉,这样才不会对你效率造成影响。至于其他的,你程序没有结束,资源肯定会一直占用。这个是你自己不肯在适当的地方释放资源而已。
注意一点,析构函数,他只是一个函数,和普通函数没有区别,你想他做什么他就做什么,只是你要告诉他而已。
比如你自己写个free()然后在某个地方调用一下它来销毁你申请的资源,他也可以是你所说的析构函数。他的功能是可以由任何函数代替的。只要你在那个函数里写了应该做的事情就可以了。

总之,你就挂个析构函数在那里,不管他就行了。自己申请的资源在合适的地方释放掉就可以了。不就是个函数而已,实现一点功能而已,你用不着刻意去管他。
yongyongjijip
2012-02-07 · TA获得超过1488个赞
知道小有建树答主
回答量:1285
采纳率:0%
帮助的人:858万
展开全部
所有类都有析构函数
如果没有定义析构函数,编译器会自动生成一个:
~类名() {}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式