For investors
股價:
5.36 美元 %For investors
股價:
5.36 美元 %認(rèn)真做教育 專心促就業(yè)
當(dāng)你看到賦值符號時要小心,因為"="語法也可用來調(diào)用copy構(gòu)造函數(shù)。
例如: Widget w3 = w2; //調(diào)用copy構(gòu)造函數(shù)!!
copy構(gòu)造函數(shù)是一個尤其重要的函數(shù),因為它定義一個對象如何passed by value(以值傳遞)。
舉個例子,考慮一下代碼:
bool hasAcceptableQuality(Widget w);
…
Widget aWidget;
if ( hasAcceptableQuality(aWidget) )
…
分解hasAcceptableQuality(aWidget)這個語句如下:
Widget w = aWidget;
hasAcceptableQuality(w)
參數(shù)w是以by value 方式傳遞給hasAcceptableQuality.在上述調(diào)用中Widget被復(fù)制到w體內(nèi),這個復(fù)制動作由Widget的copy構(gòu)造函數(shù)完成。
總結(jié):函數(shù)中的Pass-by-value意味"調(diào)用copy構(gòu)造函數(shù)".
以by value 傳遞用戶自定義類型通常是個壞主意,Pass-by-reference-to-const(引用傳遞)往往是比較好的選擇。
【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和對其真實性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問題,請在30日內(nèi)與聯(lián)系我們,我們會予以更改或刪除相關(guān)文章,以保證您的權(quán)益!