c 靜態成員遇到的坑總結

2021-12-30 00:01:19 字數 557 閱讀 6556

1.對於類靜態變數的初始化,用下面方法。

1 //.h標頭檔案中

2 class a

3 ;靜態成員的初始化應放在.cpp中而不是.h中。

因為h可能被多個cpp包含(#include),這種情況下,如果是在h中初始化靜態成員的 就會造成編譯期間的「重定義」錯誤。

1 //.cpp檔案

2 const int a::i=1; //定義前置

定義要前置放在類實現最前面,避免有時候放到了用到的函式後面。  

2.對於靜態常量的初始化,vc6編譯器僅支援下面方法   

複製**

1 //.h標頭檔案

2 class a 

3 ;7 //.cpp檔案

8 const int a::i=1;

複製**  

注意這種方法一定要把const int a::i=1;放到類實現部分的最前面。

因為後邊成員函式可能需要用到他的值。

gcc、mingw除了上面的方法之外也可用下面的方法:

1 class a 

2 ;

C 靜態成員變數,靜態成員函式

資料成員可以分靜態變數 非靜態變數兩種.靜態成員 靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名 靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員.因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜...

C 靜態成員 2 靜態資料成員

目錄 1.靜態成員的構造 2.靜態成員的訪問 3.靜態成員的初始化 include class a class b int main 輸出 b s constructor called 結論 程式只呼叫了b的建構函式,而沒有呼叫a的建構函式。原因很簡單,靜態成員僅僅在類宣告的時候而宣告,但是不會定義...

C 靜態成員和靜態成員函式

一 靜態資料成員 類體中的資料成員的宣告前加上static關鍵字,該資料成員就成為了該類的靜態資料成員。和其他資料成員一樣,靜態資料成員也遵守public protected private訪問規則。同時,靜態資料成員還具有以下特點 1 靜態資料成員的定義。靜態資料成員實際是類域中的全域性變數,其定...