1. 程式人生 > >C++構造函數對類成員變量初始化,使用初始化列表和構造函數內部直接賦值 的差別

C++構造函數對類成員變量初始化,使用初始化列表和構造函數內部直接賦值 的差別

初始化列表 不能 構造 調用 ron 二次 art size strong

初始化和賦值對內置類型的成員沒有什麽大的差別,像任一個構造函數都能夠。

但有的時候必須用帶有初始化列表的構造函數


(1) 成員類型是沒有默認構造函數的類。若沒有提供顯式初始化時,則編譯器隱式使用成員類型的默認構造函數,若類沒有默認構造函數,則編譯器嘗試使用默認構造函數將會失敗。



(2) const成員引用類型的成員。由於const對象或引用類型僅僅能初始化,不能對他們賦值。




另一個賦值次數,效率上的差別

初始化參數列表在對象初始化時對成員變量賦值一次

構造函數內直接賦值,對成員變量賦值兩次。一次是對象構造是用默認值進行賦值,第二次是調用構造函數賦值

顯然使用 構造函數初始化列表 的方式得到更高的效率


所以不知道是不是在構造函數中使用用初始化參數列表是一個好的編程習慣?大神知道的話留言知道下小白吧

C++構造函數對類成員變量初始化,使用初始化列表和構造函數內部直接賦值 的差別