今天在寫程序的時候發(fā)現(xiàn)有類里有引用類型的時候并不能使用構(gòu)造函數(shù)初始化蛹疯,只能使用初始化列表賦值。在此總結(jié)一下。
構(gòu)造函數(shù)其實分為兩個階段:(1) 初始化階段? (2) 計算階段考抄。在初始化階段所有變量都會初始化,會調(diào)用默認的構(gòu)造函數(shù)蔗彤。在計算階段會再調(diào)用對應(yīng)的構(gòu)造函數(shù)進行賦值川梅。知道了這個過程為什么引用只能使用初始化列表了。因為在調(diào)用默認構(gòu)造函數(shù)的時候并不會對引用進行賦值然遏,而引用是在初始化的時候必須進行賦值的贫途。所以就會出現(xiàn)問題。 這種問題還會出現(xiàn)的場景有:類中存在需要賦值的const變量待侵;類中沒有默認構(gòu)造函數(shù)丢早。而初始化列表在賦值的時候還沒有進入計算階段就會進行賦值,還會少調(diào)用一次默認構(gòu)造函數(shù)有利于程序的性能诫给。值得注意的是使用初始化列表初始化的時候變量賦值的順序是和你在列表寫的順序無關(guān)的香拉,只會按照類中定義順序進行初始化。