物件導向程式設計(C )學習筆記五

2021-09-24 17:11:18 字數 1044 閱讀 6760

拷貝建構函式是一種特殊的建構函式(copy constructor)

(1) 它是建構函式,所以函式名是類名,沒有返回值

(2)它是特殊的建構函式,引數形式是固定的

例如,

class object;
拷貝建構函式的含義:以乙個物件為藍本,來構造另乙個物件。

object b;

object a(b);

稱作:以b為藍本,建立乙個新的物件a,a是b的乙個拷貝/備份,兩者內容完全相同。

(1)定義物件:

object a;

object b(a);

(2)動態建立物件:

object a;

object* p = new object(a);

(3) 函式的傳值呼叫

void test(object obj);
注意⚠️

1 區分構造與賦值

構造:

object a;

object b(a);

此時為構造,在建立物件的時候給初值,拷貝建構函式被呼叫;

賦值:

object a(1,2);

object b;

b=a;

此時為賦值,不會呼叫拷貝建構函式。

當沒有寫拷貝建構函式時,編譯器會預設提供乙個拷貝建構函式。預設的拷貝工作:將每乙個成員逐格拷貝。也就是說,在多數情況下,我們無需操心,編譯器會幫我們完成成員的拷貝動作。

拷貝建構函式的檢查項:(除非必要,不要新增拷貝建構函式)

一旦新增了,請仔細檢查:

(1)所有的成員變數,要依次拷貝,不要遺漏

(2)呼叫父類的拷貝建構函式,要麼不負責,要麼全負責

拷貝其具體的資料:

text(const text& other)
此種情況稱為深度拷貝,省事的辦法:禁止使用者進行拷貝構造,將拷貝建構函式設定為private。

C 學習筆記 物件導向程式設計

1.什麼是類 物件和成員?類 乙個類包含很多的物件。比如人類就是乙個類,張 三 李四等是人類的物件,這些物件擁有人類共同的功能和資料,如身高 體重 年齡等,而具體化這些資料我們可看做是人類的成員變數。所以類是由若干個變數和相關函式組成,而物件則擁有這些變數和函式。2.如何宣告乙個類?類只有先宣告才能...

學習筆記十 物件導向程式設計(五)

正確的道路是這樣 吸取你的前輩所做的一切,然後再往前走。本講內容 抽象類 初始化塊 一 抽象類 物件導向中,所有的物件都是某乙個類的例項,但是並不是每個類都可以例項化成乙個物件。如果乙個類中沒有足夠的資訊來描繪乙個具體的物件,那麼這個類就不能被例項化,我們稱之為抽象類。抽象類用來描述一系列看起來不同...

《物件導向程式設計 C 》學習筆記1

組織問題的方法 設計和具體語言實現 物件,而不是控制或資料流,是我們設計和實現的焦點 關注東西,而不是過程.物件互相之間傳送和接收訊息 傳送者傳遞訊息,做不做 怎麼做由接收者決定,這是 蛋圖 的核心 訊息可能導致接收者改變狀態或返回結果 物件是東西,對訊息做出反應 類是東西的種類 一切都是物件 程式...