• 您現在的位置是:首頁 >要聞 > 2024-01-27 00:18:32 來源:

    拷貝構造函數和復制構造函數的區別(拷貝構造函數)

    導讀 大家好,我是小夏,我來為大家解答以上問題。拷貝構造函數和復制構造函數的區別,拷貝構造函數很多人還不知道,現在讓我們一起來看看吧!1...

    大家好,我是小夏,我來為大家解答以上問題。拷貝構造函數和復制構造函數的區別,拷貝構造函數很多人還不知道,現在讓我們一起來看看吧!

    1、拷貝構造函數,又稱復制構造函數,由編譯器調用來完成一些基于同一類的其他對象的構建及初始化。在一個對象以值傳遞的方式傳入函數體時;一個對象以值傳遞的方式從函數返回時;一個對象用于給另外一個對象進行初始化(常稱為賦值初始化)時被自動調用。

    2、拷貝構造函數必須以引用的形式傳遞(參數為引用值)。當一個對象以傳遞值的方式傳一個函數的時候,拷貝構造函數自動的被調用來生成函數中的對象。

    3、如果一個對象是被傳入自己的拷貝構造函數,它的拷貝構造函數將會被調用來拷貝這個對象這樣復制才可以傳入它自己的拷貝構造函數,這會導致無限循環直至棧溢出(Stack Overflow)。除了當對象傳入函數的時候被隱式調用以外,拷貝構造函數在對象被函數返回的時候也同樣的被調用。

    4、擴展資料:

    5、使用原則:

    6、通常的原則是:對于凡是包含動態分配成員或包含指針成員的類都應該提供拷貝構造函數;在提供拷貝構造函數的同時,還應該考慮重載"="賦值操作符號。

    7、拷貝構造函數的格式為:

    8、類名(const 類名& 對象名); 拷貝構造函數的原型,參數是常量對象的引用。由于拷貝構造函數的目的是成員復制,不應修改原對象,所以建議使用const關鍵字。

    9、參考資料來源:搜狗百科-拷貝構造函數

    本文到此講解完畢了,希望對大家有幫助。

  • 成人app