1.
構造函數執行分為兩個階段:
a.初始化階段(初始化)
初始化階段具體指的是用構造函數初始化列表方式來初始化類中的數據成員。
ClassXX:val(a),key(b){};
b.普通計算階段(賦值)
給類中的數據成員重新賦值,會覆蓋初始化階段數據成員的值。
ClassXX{val = a,key = b};
這兩個階段按照順序執行。
對於普通數據成員而言,其值的設定可以放在 初始化階段或者普通計算階段完成。
對於 const類型和&引用類型數據成員,其初始化必須在初始化階段完成。若通過
普通計算階段來初始化該值,編譯器會報錯:該變量未初始化。
2.
注意:引用型變量初始化時候必須使用相同類型的變量來初始化,不可使用常量初始化。
3. 成員初始化的順序
一般情況下,初始化列表中成員初始化按照變量定義的先后順序來初始化,與初始化列表中成源順序無關。
如果成員初始化依賴其他成員的值,那么要注意初始化順序。為了避免這個問題,一般按照定義的順序來
初始化成員。