【发布时间】:2011-12-13 23:00:33
【问题描述】:
如果class 不存在用户定义的析构函数并且需要一个析构函数,则编译器会隐式声明析构函数。什么时候需要声明自己的析构函数?
【问题讨论】:
-
不存在“并且需要一个”条件:一个类总是有一个析构函数。
-
但并不总是用户定义的析构函数。
-
见here。
标签: c++ oop destructor
如果class 不存在用户定义的析构函数并且需要一个析构函数,则编译器会隐式声明析构函数。什么时候需要声明自己的析构函数?
【问题讨论】:
标签: c++ oop destructor
如果您在构造函数中或之后分配内存、创建对象或执行其他任何操作,则需要在对象被破坏时进行清理。
【讨论】:
当隐式声明的析构函数不能满足你的需要时。
这有点牵扯。您应该查找并研究rule of three。
【讨论】:
当你想确保某事完成时。 “某事”通常是关闭网络连接或文件或释放一些内存等......
【讨论】:
每次您必须在对象销毁时执行特殊任务,即:内存释放、关闭网络连接、递减计数引用、线程同步、抛出存储的异常等。
【讨论】:
terminate 而不告诉您任何有用的情况,尽管在有限的情况下是可能的。