複製控制 複製建構函式 賦值操作符 析構函式

2021-05-23 09:30:20 字數 914 閱讀 2342

複製建構函式(copy constructor)

具有單個形參,該形參是對該類型別的引用(常用const修飾)。

用於:a.根據另乙個同型別的物件顯式或隱式初始化乙個物件。

b.複製乙個物件,將它作為實參傳給乙個函式。

c.從函式返回時複製乙個物件。

d.初始化順序容器中的元素。

e.根據元素初始化式列表初始化陣列元素。例:

如果沒有定義複製建構函式,編譯器會為我們合成乙個,或者定義了其他建構函式,也會合成複製建構函式。

賦值操作符

該型別物件賦值時會發生什麼

如果類沒有定義自己的賦值操作符,則編譯器會合成乙個。

析構函式

建構函式可以分配乙個緩衝區或開啟乙個檔案,在建構函式中分配了資源之後,需要乙個對應操作自動**或釋放資源。析構函式就是這樣的乙個特殊函式,它可以完成所需的資源**,作為類建構函式的補充。

與複製建構函式或賦值操作符不同,編譯器總是會為我們合成乙個析構函式。

乙個例子:

輸出(各個編譯器可能會有不同的規則,以下輸出在vc6)

exmpl()

exmpl(const exmpl&)

~exmpl()

exmpl()

exmpl(const exmpl&)

~exmpl()

operator = (const exmpl&)

~exmpl()

exmpl()

exmpl()

exmpl(const exmpl&)

exmpl(const exmpl&)

exmpl(const exmpl&)

~exmpl()

~exmpl()

~exmpl()

~exmpl()

~exmpl()

~exmpl()

複製控制 拷貝構造 賦值操作符

呼叫拷貝構造 teacher t2 t1 類型別,複製初始化時呼叫拷貝建構函式,直接初始化呼叫對應建構函式呼叫賦值運算子 teacher t2 t2 t1 單形參 且形參型別為該類型別的引用 常const修飾 的建構函式 class test test int d data d test test ...

複製建構函式與賦值操作符

乙個類裡是否需要複製建構函式?有時候答案是 是 如果你的類在建構函式裡分配了資源,則可能需要乙個顯式的複製建構函式來管理資源。有析構函式的類通常用析構函式來釋放建構函式分配的資源,這通常也說明需要乙個複製建構函式。如果需要複製建構函式,則多半需要乙個賦值操作符。類x的賦值由x operator 來定...

複製建構函式VS賦值操作符過載

複製建構函式,又稱拷貝建構函式。是一種特殊的建構函式,它在建立物件時,是使用同一類中之前建立的物件來初始化新建立的物件。拷貝建構函式通常用於 如果在類中沒有定義拷貝建構函式,編譯器會自行定義乙個。如果類帶有指標變數,並有動態記憶體分配,則它必須有乙個拷貝建構函式。拷貝建構函式的最常見形式如下 cla...