c 中的拷貝構造和拷貝複製的區別

2021-10-08 13:27:21 字數 584 閱讀 2518

拷貝構造

string s1(「hello」);

string s2;

s2 = s1;

此處呼叫的並不是拷貝建構函式,而呼叫的是拷貝複製函式。

首先我們了解一下拷貝建構函式和拷貝複製函式的區別,故名思意拷貝複製及時將乙個類物件一模一樣的複製給另乙個類物件。注意此時發生在物件到物件之間,即兩個物件都已經建立了。

而反觀拷貝構造,是發生在物件構造期間,即是在物件建立時發生的動作。所以上述**中的s1和s2均已經建立,那麼他們發生的就是拷貝構造。

那麼接下來看幾個拷貝構造的**:

拷貝構造

// an highlighted block

string s1(「hello」);

string s2

(s1)

;string s2=s1;

這裡有乙個新手很容易迷糊的地方,即使用=就是拷貝複製,在c++中使用=不一定等於拷貝賦值。而應該判斷此時物件是否已經呼叫了建構函式,拷貝構造也是建構函式。如果沒有呼叫那麼此時的等號就是拷貝建構函式。

C 中複製(拷貝)建構函式的理解

網上對於複製建構函式的講解數不勝數,這裡就不去仔細羅列其概念了 下面的概念是網上的,但是並未對 的執行結果進行講解,所以理解起來並不清晰,在文末我新增了自己的理解 直接上 我們結合理論分析 得出拷貝建構函式的使用方法和呼叫方式 概念簡析 拷貝建構函式是一種特殊的建構函式,它在建立物件時,是使用同一類...

c 複製 拷貝建構函式

在c 中,定義乙個空類時,編譯器會預設宣告6個成員函式,它們分別是 class empty 注意 一下,編譯器預設合成的析構函式不是虛函式。首先,說一下什麼是拷貝建構函式 也可以叫複製建構函式 它是乙個特殊的建構函式,具有單個形參 此形參是對該類型別的引用,需要用const修飾,否則會無限迴圈呼叫複...

c 拷貝(複製)建構函式

class line line line const line obj 拷貝建構函式是一種特殊的建構函式,它在建立物件時,是使用同一類中之前建立的物件來初始化新建立的物件。拷貝建構函式通常用於 1 通過使用另乙個同型別的物件來初始化新建立的物件,即用已有物件給新建立物件賦值。line line1 1...