C++ 中複製初始化和直接初始化之間有區別嗎?
複製初始化可以透過複製建構函式的概念來完成。眾所周知,建構函式用於初始化物件。我們可以建立自己的複製建構函式來複制其他物件,或者換句話說,用另一個物件的值初始化當前物件。另一方面,直接初始化可以透過賦值操作來完成。
這兩種初始化型別的主要區別在於,複製初始化為新物件建立了一個單獨的記憶體塊。但是,直接初始化不會建立新的記憶體空間。它使用引用變數指向以前的記憶體塊。
複製建構函式或複製初始化(語法)
classname (const classname &obj) {
// body of constructor
}直接初始化或賦值運算子(語法)
classname Ob1, Ob2; Ob2 = Ob1;
讓我們看看複製初始化和直接初始化之間的詳細區別。
| 複製初始化 | 直接初始化 |
|---|---|
| 複製初始化基本上是一個過載的建構函式 | 直接初始化可以使用賦值運算子完成。 |
| 這將使用已存在的物件初始化新物件 | 這將一個物件的值賦給另一個物件,這兩個物件都已存在。 |
| 當使用某個現有物件建立新物件時,使用複製初始化 | 當我們想要將現有物件賦值給新物件時,使用此方法。 |
| 這兩個物件使用單獨的記憶體位置。 | 使用一個記憶體位置,但不同的引用變數指向同一位置。 |
| 如果類中沒有定義複製建構函式,則編譯器會提供一個。 | 如果賦值運算子沒有過載,則將進行按位複製 |
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP