C++为什么要引入析构函数的概念?

对象不是在堆栈中么?假如在堆中,必须要用delete后才会自动调用析构函数,假如在栈中,那么到代码的结束位置那么栈中的变量不是会自动销毁的么?干嘛需要析构函数?请高人指点... 对象不是在堆栈中么?假如在堆中,必须要用delete后才会自动调用析构函数,假如在栈中,那么到代码的结束位置那么栈中的变量不是会自动销毁的么?干嘛需要析构函数?请高人指点,谢谢 展开
 我来答
congya001
2012-12-05 · TA获得超过5043个赞
知道小有建树答主
回答量:442
采纳率:0%
帮助的人:346万
展开全部
因为C++中会多次用到类,类就会多次调用构造函数生成实例,如果构造函数打开了一个文件,最后不需要使用时文件就要被关闭。析构函数允许类自动完成类似清理工作,不必调用其他成员函数。
析构函数也是特殊的类成员函数。简单来说,析构函数与构造函数的作用正好相反,它用来完成对象被删除前的一些清理工作,也就是专门的扫尾工作。
一般来说C++程序会占用相当一部分系统资源(特别是内存),如果程序太多而又没有回收的机制的话,会降低程序可用性,因此C++为什么要引入析构函数的概念?
如果你想了解更多的话,建议你百度或者查阅相关资料。
以上是我的建议,希望对你有所帮助。
zjfaok
2012-12-05 · TA获得超过6805个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1554万
展开全部
但是程序员可能想控制怎么销毁啊,比如对象中有一个指向堆中的指针,默认的析构函数不会自动delete这个指针,这样可能造成内存泄漏。而且有时要统计这个类的对象的数目和状态,默认的析构函数就不可以提供这样的信息
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
quantal
2012-12-05 · 超过12用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:29.2万
展开全部
基本类型当然会自动销毁,但是一个拥有指针成员的对象,指向的目标可能是用new在堆中分配的,在析构时不会自动销毁指针指向的目标,析构函数可以解决这样的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a386347993
2012-12-05
知道答主
回答量:11
采纳率:100%
帮助的人:4万
展开全部
项目越做越大,如果单单靠人为的用delete,很容易遗漏,忘记delete,造成内存泄露。所以可以利用析构函数,“自动地”回收内存,既可以减轻编程人员的负担,也减少了风险。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式