C++ 之靜態成員 初始化必須在定義外
阿新 • • 發佈:2019-02-14
如題
一般情況下,C++定義一個類會用2個檔案,“class.h”和 “class.cpp”,
使用的時候一般會讓函式在.h中宣告,然後.cpp中定義,而成員資料一般在建構函式或者.h中就初始化了。
然而,static修飾的靜態資料成員,必須在類的宣告以外來初始化。也就是說如下:
//.h
class Cls
{
private:
Cls();
~Cls();
static Cls* inctance;//宣告
public:
static Cls* get();//單例模式的獲取方法
};
.cpp
Cls* Cls::get()
{
if (instance==0)
instance = new Cls();
return instance;
}
//必須在此來初始化才能用
Cls* Cls::instance = 0;
//.main
//在main中可以用::運算子來使用靜態方法
//Cls* cls = Cls::get();