這個是本人自己復習C++ Primer時根據書上的講解以及課後習題總結的關於構造函數使用的一些注意事項。本人能力 有限,總結不全處還望大家多多指正。 構造函數注意事項總結: 1、構造函數初始化列表中初始化成員和構造函數函數體中對成員賦值的區別:使用構造函數初始化列表的版本初始 化數據成員,沒有定義初始化列表的構造函數版本在構造函數函數體中對數據成員賦值。 2、沒有默認構造函數的類類型的任何成員,以及const或引用類型的成員,不管是哪種類型,都必須在構造函數初 始化列表中進行初始化。(可從1中理解) 3、如果定義了其他構造函數,則提供一個默認構造函數幾乎總是對的。通常,在默認構造函數中給成員提供的初始 值應該指出該對象是“空”的。 4、如果一個類沒有默認構造函數(指的是該類提供了構造函數,但沒有提供自己的默認構造函數),則在編譯器需 要隱式使用默認構造函數的環境中,該類就不能使用。所以,如果一個類定義了其他構造函數,則通常也應該提 供一個默認構造函數。 5、編譯器合成的默認構造函數,不是將每個數據成員初始化為相關類型的默認值,而是使用與變量初始化相同的規 則來初始化成員:類類型的成員執行各自的默認構造函數進行初始化;內置和復合類型的成員,只對定義在全局 作用域中的對象才初始化。