1. 程式人生 > >C++ 之靜態成員 初始化必須在定義外

C++ 之靜態成員 初始化必須在定義外

如題

一般情況下,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();