1. 最优实现 class CSingleton { public: static CSingleton& GetInstance() { static CSingleton theSingleton; return theSingleton; } /* more (non-static) functions here */ private: CSingleton() // 必须定义, 且为private. { } CSingleton(const CSingleton&); // 不实现. CSingleton& operator=(const CSingleton&); // 不实现. ~CSingleton() // 可声明为public, 但这里声明为private没有错, 可被调用. { } }; 2. 其它实现 class CSingleton: { public: static CSingleton* GetInstance() { if (!m_pInstance) { m_pInstance = new CSingleton; } return m_pInstance; } /* more (non-static) functions here */ private: CSingleton() // 必须定义, 且为private. { } static CSingleton* m_pInstance; class CGarbo // 它的唯一工作就是在析构函数中删除CSingleton的实例. { public: ~CGarbo() { if (CSingleton::m_pInstance) { delete CSingleton::m_pInstance; } } }; static CGarbo m_garbo; // 定义一个静态成员, 在程序结束时, 系统会调用它的析构函数. }; CSingleton* CSingleton::m_pInstance = NULL; // 这句必须有.