對于將 test3 改為 test3(Data data) 問題的描述,似乎不妥。
對于將 test3 改為 test3(Data data) 問題的描述,似乎不妥。
/*
編譯錯誤:Copy constructor must pass its first argument by reference
參數列表中,若寫的是一個對象,則在傳參時,將調用其拷貝構造函數,那么問題就會出現:
我們將要調用的這個函數,就是拷貝構造函數,
所以,若在參數列表中,寫一個對象的話,則在傳參時,就會又調用一次拷貝構造函數,
然后在調用,從而陷入無限循環中去。
*/
Data(Data data);
上述「我們將要調用的這個函數,就是拷貝構造函數」是什么鬼?
說的是 test3(const Data& data) 嗎?
先不說它根本就不是一個拷貝構造函數,僅僅是長得像而已。
這里你已經假設把 test3 改為了 test3(Data data) ,哪來的拷貝構造函數?
如果不是的話,那么「我們將要調用的這個函數,就是拷貝構造函數」,
是意思是在 test3(Data data) 函數體中調用 Data 的「拷貝構造函數」嗎?