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