建構函式與析構函式

2021-08-07 11:55:26 字數 875 閱讀 1672

預設建構函式

c++規定,每個類必須有乙個建構函式

預設的建構函式

只要乙個類定義了乙個建構函式,c++就不再提供預設的建構函式。

與變數定義類似,在用預設建構函式建立物件時。如果建立的是全域性物件或靜態物件,則

物件的位模式全為0,否則,物件值是隨機的。

建構函式負責物件初始化工作,將資料成員初始化

建立物件時,其類的建構函式確保:在使用者操作物件之前,系統保證初始化的進行

建立物件,必須有乙個有意義的初始值

c++建立和初始化物件的過程專門由該類的建構函式來完成

建構函式給物件分配空間和初始化

如果乙個類設有專門定義建構函式,那麼c++就僅僅建立物件而不做任何初始化

建構函式滿足一下語法規則:

1、建構函式名與類名相同

2、沒有返回值型別

3、方法實現主要為字段賦初值

放在外部定義的建構函式,其函式名前要加上「類名::」

建構函式另乙個特殊之處是它沒有返回型別,函式體中也不允許返回值,

但可以有無值返回語句「return;」。

因為建構函式專門用於建立物件和為其初始化,所以它是在定義物件時自動呼叫的

如果建立乙個物件陣列

desk dd[5];//物件陣列dd,建構函式會被呼叫5次 

乙個類可能在建構函式裡分配資源,這些資源需要在物件不復存在以前被釋放

析構函式也是特殊型別的成員,它沒有返回型別,沒有引數,不能隨意呼叫,也沒有過載。

只是在類物件生命期結束的時候,由系統自動呼叫

析構函式名,就在建構函式名前加上乙個邏輯非運算子「~」,表示「逆建構函式」

如果類沒有自定義析構函式,則編譯器提供乙個預設的析構函式

析構函式只有乙個,不能過載

建構函式與析構函式

建構函式 主要作用就是為物件初始化。有一點要說的是,在繼承體系彙總,如果在建構函式中,如果沒有指定基類的建構函式,那麼編譯器會在建構函式開頭加入,基類的預設建構函式,這樣就可以初始化基類物件部分 析構函式 對於析構函式,要說的多點,實際也不太複雜,就是加入了virtual 使其具有了多型性質 inc...

建構函式與析構函式

建構函式 先看看建構函式的呼叫順序規則,只要我們在平時程式設計的時候遵守這種約定,任何關於建構函式的呼叫問題都能解決 建構函式的呼叫順序總是如下 1.基類建構函式。如果有多個基類,則建構函式的呼叫順序是某類在類派生表中出現的順序,而不是它們在成員初始化表中的順序。2.成員類物件建構函式。如果有多個成...

建構函式與析構函式

概述 乙個類有兩種特殊的成員函式 建構函式與析構函式。建構函式功能是在建立物件時,給資料成員賦初值,即物件的初始化。析構函式的功能是釋放乙個物件,在物件刪除前,用它做一些記憶體釋放工作,與建構函式的功能相反。建構函式 在物件建立時它會被自動執行,因此變數 物件的初始化 一般都放在建構函式中。1 物件...