class m
{
public:
static m* get()
{
static m s;
m* p= NULL;
p = &s;
return p;
}
private:
m();
~m();
}
答案 0 :(得分:4)
假设您想知道如何销毁单例实例(在极少数情况下,显式调用析构函数是适当的),那么您可以将单例实现为可以销毁的事物。
(这是否真的是一个单例辩论,但该讨论不属于此处。)
这意味着您需要动态创建它。
像这样:
class m
{
public:
static m* get()
{
if (!s) s = new m;
return s;
}
static void destroy() { delete s; s = nullptr; }
m(const m&) = delete;
m& operator=(const m&) = delete;
private:
m();
~m();
static m* s = nullptr;
};
(在此处插入强制警告,指出此变种根本不是线程安全的。)
答案 1 :(得分:1)
最简单的答案是exit(0)
。单身人士在计划期间一直有效,因此您必须结束计划。