C++类中的析构函数重不重要啊? 建立类的时候一般需不需要建立一个析构函数?
2个回答
展开全部
析构函数很重要,但是一般小工程,使用默认的析构就够了,而且哪些资源都会在进程结束时自行释放。
说多占用内存的地方,怕只是怕你new了不delete而已,只有new没有delete才会造成内存浪费,其他的资源申请,一般会随对象产生而产生对象销毁而销毁。
你不加析构函数,其实c++编译器已经默认给了你一个析构函数。所以把你自己申请的管理好就可以了。很多事情不一定非要在析构里面做的。析构函数使用默认的就好。自己申请的自己在合适的时候就释放就对了。
回到主题。
1.你不用刻意去写一个析构函数,因为编译器会默认给你一个(隐藏的)析构函数。
2.资源应该在合理的时候自己去释放。new了一定要delete掉,malloc了一定要free掉。至于你放在哪里随你愿意,不必非要在析构里面。
3.无论你做了多少东西,对象销毁时,你所有浪费的资源都会销毁,唯一影响的只是对象存在时内存有点占用太多而已。对象销毁后对其他程序没有任何影响
说多占用内存的地方,怕只是怕你new了不delete而已,只有new没有delete才会造成内存浪费,其他的资源申请,一般会随对象产生而产生对象销毁而销毁。
你不加析构函数,其实c++编译器已经默认给了你一个析构函数。所以把你自己申请的管理好就可以了。很多事情不一定非要在析构里面做的。析构函数使用默认的就好。自己申请的自己在合适的时候就释放就对了。
回到主题。
1.你不用刻意去写一个析构函数,因为编译器会默认给你一个(隐藏的)析构函数。
2.资源应该在合理的时候自己去释放。new了一定要delete掉,malloc了一定要free掉。至于你放在哪里随你愿意,不必非要在析构里面。
3.无论你做了多少东西,对象销毁时,你所有浪费的资源都会销毁,唯一影响的只是对象存在时内存有点占用太多而已。对象销毁后对其他程序没有任何影响
更多追问追答
追问
默认的和自己写的有什么区别吗?
在大的工程里面经常要写析构函数?
一般的小工程如果不写析构函数是不是要在进程结束之后自动释放?如果进程不结束,他还会继续占用内存(默认的析构函数会不会在进程结束之前将其释放)?
追答
大工程里,我可以这样说,我从来只用默认的。你一个对象建立后,你自己new的内存你肯定要在不用时第一时间就释放掉,这样才不会对你效率造成影响。至于其他的,你程序没有结束,资源肯定会一直占用。这个是你自己不肯在适当的地方释放资源而已。
注意一点,析构函数,他只是一个函数,和普通函数没有区别,你想他做什么他就做什么,只是你要告诉他而已。
比如你自己写个free()然后在某个地方调用一下它来销毁你申请的资源,他也可以是你所说的析构函数。他的功能是可以由任何函数代替的。只要你在那个函数里写了应该做的事情就可以了。
总之,你就挂个析构函数在那里,不管他就行了。自己申请的资源在合适的地方释放掉就可以了。不就是个函数而已,实现一点功能而已,你用不着刻意去管他。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询