C++ 中複製初始化和直接初始化之間有區別嗎?


複製初始化可以透過複製建構函式的概念來完成。眾所周知,建構函式用於初始化物件。我們可以建立自己的複製建構函式來複制其他物件,或者換句話說,用另一個物件的值初始化當前物件。另一方面,直接初始化可以透過賦值操作來完成。

這兩種初始化型別的主要區別在於,複製初始化為新物件建立了一個單獨的記憶體塊。但是,直接初始化不會建立新的記憶體空間。它使用引用變數指向以前的記憶體塊。

複製建構函式或複製初始化(語法)

classname (const classname &obj) {
   // body of constructor
}

直接初始化或賦值運算子(語法)

classname Ob1, Ob2;
Ob2 = Ob1;

讓我們看看複製初始化和直接初始化之間的詳細區別。

複製初始化直接初始化
複製初始化基本上是一個過載的建構函式直接初始化可以使用賦值運算子完成。
這將使用已存在的物件初始化新物件這將一個物件的值賦給另一個物件,這兩個物件都已存在。
當使用某個現有物件建立新物件時,使用複製初始化當我們想要將現有物件賦值給新物件時,使用此方法。
這兩個物件使用單獨的記憶體位置。使用一個記憶體位置,但不同的引用變數指向同一位置。
如果類中沒有定義複製建構函式,則編譯器會提供一個。如果賦值運算子沒有過載,則將進行按位複製

更新於:2019-07-30

2K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.