c 類中static變數初始化問題

2021-08-23 13:29:38 字數 589 閱讀 9459

首先static變數只有一次初始化,不管在類中還是在函式中..有這樣乙個函式:

void foo()

這裡的static int a=3只執行了一次。在main中呼叫foo()兩次,結果為34.將上面的函式改為

void foo()

同樣在foo()中呼叫兩次.結果為33

在類中使用非const的static類成員變數。初始化時要使用typename classname::variablename = value的形式

例如:class myclass }; int myclass::a = 3; // here initialize int main()

如果使用的是const型別的static變數,那麼就要在類中初始化:

class myclass };

如果是模板中使用非const的static的變數..那需要根據具體型別初始化。

例如 int myclass::a = 4;那麼如果你呼叫的是cout << myclass::a,那一定會編譯出錯的。

因為模板是不是具體型別,myclass, myclass才是乙個具體型別,而乙個類靜態成員在特定類中被初始化一次。這樣就好理解了。

c語言static變數初始化

程式設計師面試筆試寶典 第123頁,舉了個例子 include void fun int i intmain 書中寫道 程式輸出結果為 0 00作者原意是想表明static int value i 是變數value由於static的修飾,只會定義一次value變數,並且沒有其他對value變數賦值的...

類中變數初始化

類中的變數 包括基本資料型別,物件引用 在載入物件位元組碼進記憶體,在使用其之前,呼叫構造方法之前就已經完成初始化賦值了。其中static 修飾的變數在載入物件位元組碼時時就賦值了,其他變數在這以後被賦值,也就是static 修飾的先賦值。驗證 如下 package cn.ytu.en class ...

C 類變數初始化

c 類變數初始化 c 為中類物件的構造順序是這樣的 1.分配記憶體,呼叫建構函式時,隱式 顯示的初始化各資料成員 2.進入建構函式後在建構函式中執行一般計算 c 類中變數的初始化 1.初始化列表 csomeclass csomeclass x 0 y 1 const常量定義必須初始化,且必須使用初始...