【发布时间】:2012-10-31 23:01:01
【问题描述】:
我有一个单例类,它的实例在类的 CPP 文件中的全局范围内初始化:
Singleton* Singleton::uniqueInstance = new Singleton();
它的头文件看起来像:
class Singleton {
public:
static Singleton& getInstance() { return *uniqueInstance; }
static bool destroyInstance() { delete uniqueInstance; }
private:
//...
//... typical singleton stuff
static Singleton* uniqueInstance;
}; // end of class Singleton
我注意到它的析构函数在程序终止期间没有被执行,因此我添加了一个公共静态接口Singleton::destroyInstance(),以便在程序退出之前由客户端代码手动调用,例如删除。这个 sn-p 不是完整的代码,假设还有其他代码处理线程安全问题。在这种情况下,我怎样才能利用 RAII 来消除引入这样一个接口的需要呢?感谢您的建议。
【问题讨论】:
标签: c++ design-patterns singleton