類中資料成員的宣告與初始化總結

2021-08-15 09:26:43 字數 698 閱讀 8697

在c++中,類的靜態成員(static member)必須在類內宣告,在類外初始化,像下面這樣

class a

; int a::count = 0 ; // 類外初始化,不必再加static關鍵字

為什麼?因為靜態成員屬於整個類,而不屬於某個物件,如果在類內初始化,會導致每個物件都包含該靜態成員,這是矛盾的。

能在類中初始化的成員只有一種,那就是靜態常量成員。

這樣不行

class a

;

這樣也不行

class a

;

但是這樣可以

class a

;

結論:

總結如下表:

型別初始化方式

類內(宣告)

類外(類實現檔案)

建構函式中

建構函式的初始化列表

非靜態非常量資料成員nn

yy非靜態常量資料成員nn

ny (must)

靜態非常量資料成員

ny (must)nn

靜態常量資料成員yy

nn以下三種型別必須通過初始化列表來初始化

1.非靜態 常量

2. 引用型別

3. 沒有預設建構函式的類型別

C 類成員和資料成員初始化總結

c 為類中提供類成員的初始化列表 類物件的構造順序是這樣的 1.分配記憶體,呼叫建構函式時,隱式 顯示的初始化各資料成員 2.進入建構函式後在建構函式中執行一般計算 1.類裡面的任何成員變數在定義時是不能初始化的。2.一般的資料成員可以在建構函式中初始化。3.const資料成員必須在建構函式的初始化...

C 類成員和資料成員初始化總結

c 為類中提供類成員的初始化列表。類物件的構造順序是這樣的 1.分配記憶體,呼叫建構函式時,隱式 顯示的初始化各資料成員 2.進入建構函式後在建構函式中執行一般計算 1.類裡面的任何成員變數在定義時是不能初始化的。2.一般的資料成員可以在建構函式中初始化。3.const資料成員必須在建構函式的初始化...

類的靜態資料成員宣告 定義 初始化

在c 中,類的靜態成員 static member 必須在類內宣告,在類外初始化,像下面這樣。class a int a count 0 類外初始化,不必再加static關鍵字 為什麼?因為靜態成員屬於整個類,而不屬於某個物件,如果在類內初始化,會導致每個物件都包含該靜態成員,這是矛盾的。能在類中初...