c++拷貝構造函數 通常類的拷貝構造函數的參數是什么?
通常類的拷貝構造函數的參數是什么?使用引用參數復制構造函數的一個重要原因是避免遞歸調用!從語言規(guī)范的角度來看,這只是一種規(guī)則。例如&B=a表示B是對a的引用。從邏輯角度看,參數的傳遞本身就是一個
通常類的拷貝構造函數的參數是什么?
使用引用參數復制構造函數的一個重要原因是避免遞歸調用!從語言規(guī)范的角度來看,這只是一種規(guī)則。例如&B=a表示B是對a的引用。從邏輯角度看,參數的傳遞本身就是一個副本。如果不使用引用類型,則當復制構造函數傳遞參數時將調用復制構造函數,從而導致遞歸調用。因此,它是通過引用類型傳遞的。
為什么復制構造函數的形參必須是一個引用?
復制構造函數實際上是一個函數。如果將參數定義為類型而不是類型引用,它將首先調用該類型的復制構造函數并重構一個新實例,就像下面的示例類MyClass一樣。這是一個簡單的類{}int fun(MyClass a)//這是一個函數。調用時,編譯器會自動調用MyClass類型的構造函數,并重新實例化MyClass int fun(MyClass&;AMPA)//此函數不會調用MyClass類型的構造函數,只需傳遞一個指針~現(xiàn)在回到您的問題,賦值構造函數也是一種構造函數,你給它一個非引用、非指針的參數,它會調用這種類型的構造函數,這很好~一個函數不斷地調用自己,這樣它就不會出錯,就不會堆棧溢出了,是嗎?簡單來說,事情是這樣的:intfun(MyClass a){fun(a)}//你認為這個函數有一天會結束嗎?