c 類的成員變數初始化總結

2021-09-24 11:21:50 字數 973 閱讀 2867

1.c++變數的初始化方式

首先把需要初始化的成員變數分為幾類:

a.一般變數(int)

b.靜態成員變數(static int)

c.常量(const int)

d.靜態常量(static const int)

對應的初始化方式是:

a.一般變數可以在初始化列表裡或者建構函式裡初始化,不能直接初始化或者類外初始化

b.靜態成員變數必須在類外初始化

c.常量必須在初始化列表裡初始化

d.靜態常量必須只能在定義的時候初始化(定義時直接初始化)

舉乙個簡單的例子:

#include #include using namespace std; 

class test

}; int test::b=2;

void main()

這裡之前不知道什麼是初始化列表。

建構函式初始化列表以乙個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在括號中的初始化式。例如:

class cexample

//建構函式內部賦值

cexample()

};

上面的例子中兩個建構函式的結果是一樣的。上面的建構函式(使用初始化列表的建構函式)

顯式的初始化類的成員;而沒使用初始化列表的建構函式是對類的成員賦值,並沒有進行顯式的初始化。

初始化和賦值對內建型別的成員沒有什麼大的區別,像上面的任乙個建構函式都可以。對非內建型別成員變數,為了避免兩次構造,推薦使用類建構函式初始化列表。但有的時候必須用帶有初始化列表的建構函式:

1.成員型別是沒有預設建構函式的類。若沒有提供顯示初始化式,則編譯器隱式使用成員型別的預設建構函式,若類沒有預設建構函式,則編譯器嘗試使用預設建構函式將會失敗。

2.const成員或引用型別的成員。因為const物件或引用型別只能初始化,不能對他們賦值。 

C 語言類成員變數初始化總結

共有5種方法。第1種,在無引數的建構函式中初始化 第2種,帶引數的建構函式中初始化 第3種,直接給成員變數賦值 第4種,呼叫成員函式來初始化成員變數 第5種,用this指標 分別敘述。方法一 class animal animal animal 方法二 class animal animal ani...

c 類的成員變數初始化

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

類成員變數初始化

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