C 成員初始化列表的語法

2022-10-11 01:39:09 字數 385 閱讀 6659

如果classy是乙個累,而mem1、mem2、mem3都是這個類的資料稱源,則類建構函式可以使用如下的語法來初始化資料成員:

classy::classy(int n, int m) : mem1(n), mem2(0), mem3(n*m + 2)

上述**將mem1初始化為n,將mem2初始化為0,將mem3初始化為n*m+2。從概念上說,這些初始化工作是在物件建立時完成的,此時還未執行括號中的任何**。請注意以下幾點:

* 這種格式只能用於建構函式

* 必須用這種格式來初始化非靜態const資料稱源(至少在c++11之前是這樣的);

* 必須用這種格式來初始化引用資料稱源。

資料成員被初始化的順序與它們出現在類宣告中的順序相同,與初始化器中的排列順序無關。

成員初始化列表語法

class myclass 對於const資料成員,我們不能像常規的那樣使用建構函式來初始化,也就是不能像下面那麼做。對此,c 提供了特殊的語法來初始化const資料成員 成員初始化列表。首先,來看看為什麼不能這麼做?myclass int c 我們都知道const變數一定要在建立的時候初始化 co...

C 成員初始化列表

類物件的構造順序是這樣的 1.分配記憶體,呼叫建構函式時,隱式 顯示的初始化各資料成員 初始化階段可以是顯式的或隱式的,取決於是否存在成員初始化表。隱式初始化階段按照宣告的順序依次呼叫所有基類的預設建構函式,然後是所有成員類物件的預設建構函式。2.進入建構函式後在建構函式中執行一般計算 計算階段由建...

C 成員初始化列表

c 初始化類的成員,不僅可以用constructor完成,也可以用初始化類成員列表來完成。有些情況只能用第一種,而且通常第一種效率高些。兩者區別 1,普通變數編譯器會預設替你初始化。它們既能初始化,也能被賦值,而常量const按照其意思只能被初始化,不能賦值。所有const member只能用成員初...