#include "stdafx.h" #include <iostream> class CSingleton { public: void Print() { std::cout << "Singleton Print" << std::endl; } public: static CSingleton* getInstance() { if (NULL == m_pInstance) m_pInstance = new CSingleton(); return m_pInstance; } private: static CSingleton* m_pInstance; }; CSingleton* CSingleton::m_pInstance = NULL; int _tmain(int argc, _TCHAR* argv[]) { CSingleton* pInstance = CSingleton::getInstance(); pInstance->Print(); return 0; } 或者 class CSingleton { public: static CSingleton* getInstance() { if (NULL == m_pInstance) { static CSingleton _inst; m_pInstance = &_inst; } return m_pInstance; } private: static CSingleton* m_pInstance; }; 支持线程安全 class CSingleton { public: static CSingleton* getInstance() { if (NULL == m_pInstance) { WaitForSingleObject(m_mxLock, INFINITE); if (NULL == m_pInstance) { static CSingleton _inst; m_pInstance = &_inst; } ReleaseMutex(m_mxLock); } return m_pInstance; } private: static CSingleton* m_pInstance; static HANDLE m_mxLock; };