2010-07-19 97 views
0

可能重複:
Why should the copy constructor accept its parameter by reference in C++?C++編程拷貝構造函數

專家你好,

能否請你告訴會發生什麼,如果我din't給在複製對象的引用構造函數。提前

感謝 瘋狂

+1

請給出你的意思代碼示例 – 2010-07-19 12:43:09

+0

Duplicate:http://stackoverflow.com/questions/2685854/why-should-the-copy-constructor-accept-its-parameter-by-reference-in-c他意味着爲什麼參數是一個參考。答案當然是,如果論證是有價值的,那就必須複製。爲了做到這一點,你使用複製構造函數。所以你需要製作一份副本,等等,無限的。 – GManNickG 2010-07-19 12:43:45

+0

Bah!我應該知道這已經被問過。 – 2010-07-19 12:46:19

回答

4

正確的答案是,你還沒有寫一個拷貝構造函數:如果第一個參數是

類X的非模板的構造是一個拷貝構造函數類型X&,const X&,volatile X&const volatile X&,並且或者沒有其他參數,否則所有其他參數都具有默認參數(C++03§12.8/ 2)。

爲什麼複製構造函數的參數不能被值取?複製構造函數被調用來創建類的對象的副本。必須製作副本才能按值傳遞對象。如果複製構造函數可以通過值獲取對象,那麼最終會嘗試調​​用它的無限遞歸。

2

這將是對複製構造函數的遞歸調用,因爲會調用複製構造函數來創建傳遞給它的對象的副本。