C 建構函式與析構函式

2022-06-19 23:48:11 字數 903 閱讀 7472

普通建構函式

當你在自定義類中沒有編寫建構函式時,編譯器會幫你自動生成乙個建構函式,並且這個建構函式不會做任何事情,可以認為是乙個空函式。建構函式不會有返回值,但是可以有不同型別個數的傳入引數,其實就是過載建構函式。

淺拷貝建構函式

當你沒有定義淺拷貝建構函式時,編譯器也會幫你生成乙個淺拷貝建構函式。什麼是淺拷貝?當你類成員不涉及系統資源,那麼就可以使用淺拷貝。淺

class

child

};

**中,這個類沒有使用到系統資源,因此可以直接的賦值。

ps:拷貝建構函式和 過載operator =函式的呼叫時機是不同的,拷貝建構函式只在初始化時候呼叫,即 classname t = c;而賦值運算子是在賦值的時候才呼叫。 

深拷貝建構函式

當使用到了系統資源的時候應該要使用深拷貝建構函式。什麼是深拷貝?如果類成員有乙個指標,這時採用淺拷貝,那麼就把指標位址拷貝到另乙個物件的成員中,這時候兩個物件擁有同乙個指標位址,進行釋放時,會對這乙個位址進行兩次釋放,程式一定會異常。所以拷貝時候不能像淺拷貝一樣直接賦值,而是要申請一塊新的記憶體,記憶體裡面存放的是被拷貝物件類成員的指標指向的值。深拷貝是需要自己手動寫。

析構函式

析構函式一般做的事情是釋放掉使用了系統資源的地方。當物件的生命週期結束時,就會呼叫析構函式。編譯器不會預設提供析構函式

物件的初始化順序

一般來說,最先初始化的是父類,然後是物件的成員,再到子類的建構函式。當物件生命週期結束時,則是子類的析構函式先執行,再到父類的析構函式。

c 建構函式與析構函式

一 建構函式 c 提供建構函式來處理物件的初始化,建構函式是一種特殊的成員函式,與其他的成員函式不同,不需要使用者來呼叫他,而是在建立物件時自動執行。它的特點是 函式名和類名相同,沒有返回值,可以過載 如果程式中未宣告,則系統自動產生出乙個預設的建構函式,預設的建構函式時不帶引數的。比如 stude...

C 建構函式與析構函式

c 規定,每個類必須有預設的建構函式,沒有建構函式就不能建立物件。若沒有提供任何建構函式,那麼c 提供自動提供乙個預設的建構函式,該預設建構函式是乙個沒有引數的建構函式,它僅僅負責建立物件而不做任何賦值操作。只要類中提供了任意乙個建構函式,那麼c 就不再自動提供預設建構函式。類物件的定義和變數的定義...

C 建構函式與析構函式

建構函式 對於c 的建構函式,暫且將其分為以下幾類 1.預設建構函式 2.隱士轉換建構函式 3.拷貝建構函式 4.其它建構函式 1.預設建構函式表示沒有任何引數的建構函式,當自定義任何建構函式以後,將不再自動建立預設建構函式,當然,預設建構函式啥也不幹,程式設計師關心係數頓時大跌。關於預設建構函式還...