C++ 中的複製建構函式與賦值運算子
複製建構函式和賦值運算子用於將一個物件初始化為另一個物件。它們之間的主要區別在於,複製建構函式為新物件建立了一個單獨的記憶體塊。但是賦值運算子不會建立新的記憶體空間。它使用引用變數指向之前的記憶體塊。
複製建構函式(語法)
classname (const classname &obj) { // body of constructor }
賦值運算子(語法)
classname Ob1, Ob2; Ob2 = Ob1;
讓我們看看複製建構函式和賦值運算子之間的詳細區別。
複製建構函式 | 賦值運算子 |
---|---|
複製建構函式基本上是一個過載的建構函式 | 賦值運算子基本上是一個運算子。 |
這將使用已存在的物件初始化新物件 | 這將一個已存在物件的的值賦給另一個已存在物件。 |
當使用某個現有物件建立新物件時,使用複製建構函式 | 當我們想要將現有物件賦值給新物件時,使用此運算子。 |
這兩個物件使用單獨的記憶體位置。 | 使用一個記憶體位置,但不同的引用變數指向同一位置。 |
如果類中未定義複製建構函式,則編譯器會提供一個。 | 如果賦值運算子沒有過載,則會進行按位複製 |
廣告