C 拷貝控制

2021-09-26 21:21:23 字數 715 閱讀 4728

拷貝建構函式

如果有乙個建構函式第乙個引數是自身類型別的引用,且任何額外引數都有預設值,則此建構函式是拷貝建構函式。

class

foo;

如果沒有為乙個類定義拷貝建構函式,編譯器會為我們定義乙個。

拷貝建構函式不僅在我們用=定義變數時發生,也會在一下情況發生:

拷貝賦值運算子

與拷貝建構函式一樣,如果類未定義自己的拷貝賦值運算子,編譯器會為它合成乙個。

class

foo;

賦值運算子通常返回乙個指向其左側運算物件的引用。『

析構函式

析構函式釋放物件使用的資源,並銷毀物件的非static資料成員。

class

foo;

析構函式也有乙個函式體和乙個析構部分。析構函式首先執行函式體,然後銷毀成員。

三/五法則

有三個基本操作可以控制類的拷貝操作:拷貝建構函式、拷貝賦值運算子和析構函式。

通常:對析構函式的需求要比對拷貝建構函式或賦值運算子的需求更明顯。如果這個類需要乙個析構函式,肯定它也需要乙個拷貝建構函式和乙個拷貝賦值運算子。

如果乙個類需要乙個拷貝建構函式,幾乎可以肯定它也需要乙個拷貝賦值運算子。反之亦然。

如果類定義了乙個移動建構函式和/或乙個移動賦值運算子,則該類的合成拷貝建構函式和拷貝賦值運算子會被定義為刪除的。

C 拷貝控制

本文主要討論c 類定義中的拷貝控制 copy control 拷貝建構函式 賦值操作符和析構函式。如果文中有錯誤或遺漏之處,敬請指出,謝謝!c 類中有四個不可或缺的部分,那就是建構函式 拷貝建構函式 賦值操作符和析構函式。如果類中沒有定義這些函式,那麼編譯器將為類自動生成這些函式。當然,你也可以通過...

C 拷貝控制

當定義乙個類時,顯示或隱式地指定了此型別的物件在拷貝 賦值和銷毀時所執行的操作,通過三個特殊的成員函式來控制這些操作,分別是拷貝建構函式,賦值運算子和析構函式。拷貝建構函式定義了當使用同型別的另乙個物件初始化新物件時的操作,賦值運算子定義了將乙個物件賦值給同型別的另乙個物件時的操作,析構函式定義了此...

C 拷貝控制

c 作為高階語言,物件導向程式設計是其重要的語言特性。設計好的架構,其基礎也是類的設計。我們之前已經將類本身的知識梳理了一遍。這一章著重介紹類控制,包括拷貝控制 過載 物件導向設計以及模板和泛型程式設計。這些非常非常重要,是實現工程必須要掌握的基礎知識。要打起十分的精神來學習。按照c primer的...