C 建構函式初始化列表

2021-07-09 04:39:24 字數 742 閱讀 4276

建構函式中,成員變數一定要通過初始化列表來初始化的有以下幾種情況:

1、const常量成員,因為常量只能在初始化,不能賦值,所以必須放在初始化列表中;

2、引用型別,引用必須在定義的時候初始化,並且不能重新賦值,所以也要寫在初始化列表中;

3、沒有預設建構函式的類型別,因為使用初始化列表可以不必呼叫預設建構函式來初始化,而是直接呼叫拷貝建構函式;

筆試題第一題

解析:b是常量成員

c是引用型別,

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

因為靜態成員屬於整個類,而不屬於某個物件,我們呼叫建構函式是為了建立物件,如果在類內初始化,會導致每個物件都包含該靜態成員,這是矛盾的。

故選b第二題

解析:選f,同上。

第三題

解析:bcd 同上

e只是指向物件的指標

c是a的物件,a的物件中的私有成員是對a的引用,所以c不能改變,一定要在初始化列表裡面初始化。

故選a

C 建構函式 ,初始化列表

c 中的類的建構函式 1.如果類中沒有定義建構函式,編譯器將生成乙個預設建構函式,這個預設建構函式會呼叫類中所有成員的預設建構函式,但不會對如int,double的基本資料型別做初始化 2.類中可以定義多個建構函式,但每個建構函式應該有不同的引數實現 3.預設建構函式必須定義的情況,當需要定義乙個物...

C 建構函式初始化列表

從概念上講,可以認為建構函式分兩個階段進行 1.初始化階段 2.普通的計算階段。計算階段由建構函式函式體中的所有語句組成 不管成員是否在建構函式初始化列表中顯示初始化,類型別的資料成員總是在初始化階段初始化。初始化發生在計算階段的開始之前。建議 使用建構函式初始化列表 注 必須對任何const或引用...

C 建構函式初始化列表

建構函式初始化列表以乙個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在括號中的初始化式。例如 example example ival 0 dval 0.0 ival 和dval是類的兩個資料成員 上面的例子和下面不用初始化列表的建構函式看似沒什麼區別 example exam...