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