C 類中成員變數初始化

2021-06-21 01:35:24 字數 750 閱讀 7451

c++類中成員變數包括主要四種:

普通成員變數,常量成員變數,靜態成員變數,靜態常量成員變數

上述成員變數該如何初始化,注意不是賦值。

由於普通成員變數和常量成員變數,每乙個類例項化,都乙份記憶體拷貝。c++規定成員變數在宣告(注意宣告與定義區別)時,不允許初始化,因此這些變數只能放在建構函式初始化列表中。

靜態成員變數所有類例項化,只有乙份記憶體拷貝,不能放在建構函式中初始化, 因為共享乙份記憶體。同時c++規定成員變數在宣告(注意宣告與定義區別)時,不允許初始化。所以只能定義時初始化。

靜態常量成員變數比較特殊化,即不能放在建構函式初始化列表中,也不能定義時初始化,那麼只能在宣告(注意宣告與定義區別)時,初始化。

宣告與定義簡單區別,宣告不分配記憶體,定義分配記憶體。類沒有產生物件,那麼成員變數沒有分配記憶體的,所有其成員變數為宣告。注意與c語言區別,c語言變數有時即是定義有時宣告, 例如int a;

另外常量成員函式,不能改變成員變數,例如賦值操作,但是可以改變區域性變數。

using namespace std;

#include

class test

int getval() const

};int test:: k=2; //定義靜態成員初始化

int main()

{int c;

test test(3);

cout<<"const:"<

cout<<"static:"<

cout<<"const&static"<

類成員變數初始化

在 c 中,類的成員變數未初始化問題,取決於物件建立方式,不同的建立方式,直接導致類成員變數的初值不同。本文通過下例,得出一下結論 1.在函式體內置立乙個物件,類成員變數和普通的區域性變數一樣,是乙個隨機值。2.建立乙個全域性成員物件,類成員變數和全域性變數一樣,編譯器賦值為 0。3.在函式體內 n...

c 類的成員變數初始化

最近在做乙個關於boost的專案,修改將原本的多個commandline進行合併精簡,合併成乙個path路徑,然後再加上不同的hardcode的檔名組成乙個完整的路徑。由於在使用ptree時會呼叫靜態方法建立乙個instance的類,因此這裡需要使用靜態成員變數。大概整理了一下以前沒有注意過的類的成...

c 成員變數初始化

include include using namespace std classa a a intmain 類a的成員變數將進行預設初始化 c 11新特性允許為資料成員提供類內初始值 include include using namespace std classa a a intmain a....