C++ 單例模板類
阿新 • • 發佈:2019-02-04
單例模式(Singleton)是設計模式常見的一種,其目的是保證系統中只存在某類的唯一例項(物件)。在應用程式中,經常用於配置,日誌等的處理。
使用單例模板類可以很容易地實現單例模式。
程式碼如下:
template<class T> class CSingleton { public: static T* Instance() { if (NULL == m_pInstance) { // 二次檢查 if (NULL == m_pInstance) { m_pInstance = new T; atexit(Destory); } } return m_pInstance; } protected: CSingleton() {} //防止例項 CSingleton(const CSingleton&) {} //防止拷貝構造一個例項 CSingleton& operator=(const CSingleton&){} //防止賦值出另一個例項 virtual ~CSingleton() { } static void Destory() { if (m_pInstance) { delete m_pInstance; m_pInstance = NULL; } } private: static T* m_pInstance; }; template<class T> T* CSingleton<T>::m_pInstance = NULL;