當我試圖創建具有一個構造,其通過值取該類的一個對象,例如像一類:C++「無效構造函數」
class X{
X(){}
X(X x){} //Error!
};
則g ++抱怨用於第二構造函數以下:
error: invalid constructor; you probably meant ‘X (const X&)’
親愛的編譯器,不,我不是指一個const引用。這一次,我想做我寫的東西:通過值傳遞參數x!爲什麼這是無效的?
當我試圖創建具有一個構造,其通過值取該類的一個對象,例如像一類:C++「無效構造函數」
class X{
X(){}
X(X x){} //Error!
};
則g ++抱怨用於第二構造函數以下:
error: invalid constructor; you probably meant ‘X (const X&)’
親愛的編譯器,不,我不是指一個const引用。這一次,我想做我寫的東西:通過值傳遞參數x!爲什麼這是無效的?
您正在嘗試創建複製構造函數,並且複製構造函數必須參考。否則,當你通過值傳遞x到構造函數中時,編譯器將不得不創建x的臨時副本,爲此需要調用複製構造函數,爲此需要創建一個臨時副本....廣告infinium。
所以拷貝構造函數必須通過引用來引用它的參數來防止無限遞歸。
因爲
X(X x){} //Error!
需要一個拷貝構造函數。即本身即遞歸。即什麼時候結束?
您正試圖實現一個複製構造函數,該構造函數僅通過將引用傳遞給要複製的對象。
你會如何調用這樣的構造函數? – 2012-08-10 15:42:31