c 特殊建構函式詳解

2022-09-26 10:12:27 字數 1287 閱讀 1723

目錄

眾所周知,建構函式的作用是類在建立物件時的初始化,而拷貝建構函式則是建構函式裡的一種特殊構造。

拷貝構造:是c++特有的,他是一種特殊的建構函式

程式設計客棧用於基於乙個同乙個類的的第乙個物件去創造和初始化的乙個物件

第一的引數是本類的物件的引用(const)

一種特殊的建構函式,同乙個類的乙個物件去創造或初始化乙個物件

在沒寫的時候,是預設存在的,自己寫了之後,系統預設的就會消失(這一點,就是建構函式)

拷貝建構函式可以實現:物件的複製

class monster

monster(int hp); //建構函式

~monster(); //析構函式

void show();

private:

int hp;

};int main()

monster::monster(int hp)

monster::~monster()

void monster::shwww.cppcns.comow()

一、函式的引數是:「類的物件」

二、函式的返回值是類的物件

三、使用一的物件給另乙個物件初始化

四、使用乙個物件構造另乙個物件

賦值不屬於拷貝構造,所以不呼叫拷貝建構函式

淺拷貝就是預設的拷貝建構函式,這個拷貝構造的操作,我們可以理解為,是用『=』號乙個乙個的賦值的,我們將之稱為,淺拷貝,因為在用指標的時候就可以能會出現問,因為我們知道兩個同等型別的指標之間用『=』號賦值,是兩個指標的位址指向同乙個記憶體,那麼就可能會存在乙個問題,就是兩個物件的指標都指向同乙個記憶體,那麼如果其中乙個物件把該記憶體釋放了,就會導致另外乙個物件的指標變成野指標。 

為此,我們就需要進行到深拷貝。

public:

int *p;

rect();

~rect();

int width;//寬

int height;//高

//過載拷貝構造,實現淺拷貝拷貝

rect(rect&rect)

public:

int *p;

rect();

~rect();

int width;//寬

int height;//高

//過載拷貝構造,實現深拷貝

rect(rect&rect)

可見,淺拷貝與深拷貝的www.cppcns.com差距就是前者是直接拷貝指標,讓兩個指標同時指向乙個位址,這樣一方進行析構的時候,另一方就會成為野指標,而深拷貝就是避免了這一點,申請一塊新記憶體,並複製這塊記憶體的資料。

C 建構函式詳解

c 類的建構函式詳解 一 建構函式是幹什麼的 class counter private 資料成員 int m value 該類物件被建立時,編譯系統物件分配記憶體空間,並自動呼叫該建構函式 由建構函式完成成員的初始化工作 eg counter c1 編譯系統為物件c1的每個資料成員 m value...

c 建構函式詳解

c 類的建構函式詳解 一 建構函式是幹什麼的 class counter private 資料成員 int m value 該類物件被建立時,編譯系統物件分配記憶體空間,並自動呼叫該建構函式 由建構函式完成成員的初始化工作 eg counter c1 編譯系統為物件c1的每個資料成員 m value...

C 建構函式詳解

c 建構函式的知識在各種c 教材上已有介紹,不過初學者往往不太注意觀察和總結其中各種建構函式的特點和用法,故在此我根據自己的c 程式設計經驗總結了一下c 中各種建構函式的特點,並附上例子,希望對初學者有所幫助。c 類的建構函式詳解 一 建構函式是幹什麼的 class counter private ...