可能重複:
Initializing fields in constructor - initializer list vs constructor body對於類構造函數,通過圓括號或等號分配的區別是什麼?
在講座中,我參加了,講師在C++簡單談及了非默認的類的構造函數。他特別指出,一種版本比另一種更可取。他表現出這兩個例子:
Point::Point(double x, double y, double z)
: x_(x), y_(y), z_(z)
{}
Point::Point(double x, double y, double z)
{ x_= x; y_= y; z_= z; }
他提到的第一實施例(使用括號內)是寫構造方法的優選方式。
我的問題是:有什麼區別,爲什麼這很重要?第一個優於第二個的方式是什麼?
第一種方法避免了在某些情況下的初始化和賦值,它是唯一一個可以用於const和引用成員的函數。第一個也可以提供對基類的初始化和委託構造函數的訪問。 – chris
http://stackoverflow.com/questions/9903248/initializing-fields-in-constructor-initializer-list-vs-constructor-body和http://stackoverflow.com/questions/1598967/benefits-of-initialization-lists回答這個。 – jogojapan