Member Initialization List
常常有人搞不清楚example 1 & example 2的效果有何差異,在大多數的情況下,此兩方法的結果相等,
然而在某些情況下,變不一樣.因此往往也會有暗藏陷阱存在.
對於example 1而言,此方法稱之為在建構式中賦予值(assignment),此時對Class data member來說早已
執行過其construct,因此此時不過是在付予值而已,所以對_name=""變顯得沒必要.
對於example 2而言,此時期Data member尚未逕行Initialization,所以此時寫在:之後的都是指定
成員函數所使用的construct
1.在進行member initialization,其initialiation的順序是根據Class內的member順序而來,而非在
Initialization所指定的順序
2.每一個data member只能Initialization 一次
3.另外,對於兩種資料型態const ,reference 兩種值,因為要在事先必須付予值,所以就必須要採用
member initialization的方式指定值,而不是在事後的construct中賦予值
參考:C++ primer 3/e