#include <iostream> using namespace std; class CSingleton { private: CSingleton() {} // 构造是私有的 static CSingleton *m_pInstance; public: static CSingleton *GetInstance() { if (m_pInstance == NULL) { m_pInstance = new CSingleton(); } return m_pInstance; } }; CSingleton *CSingleton::m_pInstance = NULL; // 初始化静态数据成员 int main() { CSingleton *s1 = CSingleton::GetInstance(); CSingleton *s2 = CSingleton::GetInstance(); if (s1 == s2) { cout << "s1 == s2" << endl; } return 0; }
类的所有静态变量都必须在类的外部初始化,格式是:类型名 类名::变量名=初始值;而不管它是私有的还是公有的。