C++单例模式的最实用写法

mac2026-05-10  1

方法一(C++11,直接初始化):

class NoCopyable { public: NoCopyable(){} private: NoCopyable(const NoCopyable&); NoCopyable& operator=(const NoCopyable&); }; class CSingleton : public NoCopyable { public: static CSingleton* instance(); ~CSingleton(){} private: CSingleton(){} }; CSingleton* CSingleton::instance() { static CSingleton ins; return &ins; }

方法二(线程库,call_once):

static std::once_flag oc;  // 用于call_once的局部静态变量 Singleton* Singleton::m_instance; Singleton* Singleton::getInstance() {             std::call_once(oc, [&] () { m_instance = newSingleton(); });             return m_instance;         }

 

最新回复(0)