懒汉式:懒汉式的特点是延迟加载,比如配置文件,等到用的时候在创建类的实例,并且只可以创建一个。
class CSingleton { public: static CSingleton* GetInstance() { if ( m_pInstance == NULL ) m_pInstance = new CSingleton(); return m_pInstance; } private: CSingleton(){}; static CSingleton * m_pInstance; };
饿汉式:饿汉式的特点是一开始就加载了,如果说懒汉式是“时间换空间”,那么饿汉式就是“空间换时间”,因为一开始就创建了实例。
class CSingleton { private: CSingleton() { } public: static CSingleton * GetInstance() { static CSingleton instance; return &instance; } };