C++11 单例模式 std::call_once实现
class Singleton {
public:
static Singleton* getInstance() {
static std::once_flag onceFlag; // 必须是静态的
std::call_once(onceFlag, [&] {m_instance = new Singleton(); }); // 只会调用一次
return m_instance;
}
private:
Singleton() {} //私有构造函数,不允许使用者自己生成对象,但是必须要实现
Singleton(const Singleton& other) = delete;
Singleton& operator = (const Singleton& other) = delete;
private:
static Singleton* m_instance; //静态成员变量
};
Singleton* Singleton::m_instance = nullptr; //静态成员需要先初始化