在析构函数中执行任务
Perform task in destructor
在析构函数中执行对象的重要/关键任务是一种好技术吗?如:
class MyObject{
~MyObject() {
Execute();
}
void Execute() {...}
};
析构函数是在对象超出作用域时自动清除对象所持有的资源的一种方法。在析构函数中不应该做任何其他操作。但清理可能涉及关键或复杂的处理。还要确保exception不会离开析构函数。这将导致意外终止程序,如果析构函数最初是由于另一个异常导致堆栈展开而调用的。
为关键清理/资源管理提供公共接口是很好的实践,这样客户端代码就可以调用它并处理任何异常。您可以检查清除过程是否在析构函数中完成,如果没有执行,但是将吞下抛出的任何异常。
总而言之,除了在析构函数中清理资源之外,NOT是执行任何操作(无论关键与否)的好做法。
一般来说答案是否定的。例如,如果程序崩溃,则不会调用析构函数。还有其他不叫医生的情况。析构函数是用于清理的专用方法。类用户期望这样的行为
相关文章:
- 为什么即使调用了析构函数,C++11 中的分离线程也可以执行
- 是否可以访问类数据成员并在析构函数中对它们执行操作?
- 程序按执行方式工作,直到我向其添加析构函数为止
- 如何在析构函数中执行一些代码*在*成员被销毁之后
- 析构函数如何执行?
- 在执行std::函数析构函数时调用它
- C++:程序的执行(构造函数、析构函数、赋值运算符等)
- 执行析构函数时,服务器应用程序总是崩溃
- 析构函数和异步任务
- C++类组合 - 何时执行构造函数和析构函数
- 赋值重载显式调用析构函数(在执行其他二进制重载运算符之后)
- C++:简单的任务,析构函数被多次调用
- 有没有办法让C++类在开始执行析构函数之前自动执行方法
- 在C++QObject子类中调用析构函数之前执行操作
- c++中构造函数和析构函数的执行顺序
- 继承类的对象的析构函数执行
- 停止执行而不跳过析构函数
- 链表析构函数与Valgrind一起执行,但不能单独执行
- 执行"delete this"时缺少虚拟析构函数
- 在析构函数中执行任务