在某些C ++项目中,对象初始化销毁由用户定义的函数处理,而不是由constructors
和destructors
处理。
class A
{
public:
A();
virtual ~A();
void Initialize(){
// do some real object initialization here
};
void CleanUp(){
// do some real object destroy here
}
}
以下是我可以说明为什么要这样做的一些原因:
我想知道在用户定义的函数中我们是否应该进行对象初始化和销毁?
答案 0 :(得分:6)
这是一种可怕的反模式。
Initialize
的线程安全性。Initialize
之前进行:这是您无法控制的。CleanUp
之后发生:这是您无法控制的。CleanUp
的线程安全性。CleanUp
和销毁之间处于未定义状态。(1)和(8)特别重要;正好一个线程将调用构造函数和析构函数。它们有助于实现计划的稳定性。