建構函式與析構函式

2021-08-03 07:57:06 字數 1392 閱讀 1524

一、建構函式

在類中資料成員一般 多為私有資料成員,要對他們進行初始化,必須要用乙個公有函式來進行,並且這個函式在類中僅且只能被調動一次(構造乙個物件時),稱為建構函式。

對私有資料訪問,必須通過公有方法

建構函式特點:

1.與類名一致

2. 函式無返回值,是沒有返回值並不是void,即什麼都不能寫,也不可寫void,時間是建構函式是有返回值的,返回的就是建構函式所建立的物件。

3.在某個物件從生到死只能被調動一次。

4.建構函式可以過載,由不同的引數列表區分,調動時候按照過載規則執行。

5.如果預設建構函式,系統會給乙個預設建構函式,很可惜他不什麼都不做,作用只是構造出物件。

6.如果寫了建構函式,系統就不會自作多情在為你建立預設的建構函式

7.預設的建構函式只能同時出現乙個(假如建構函式中的引數列表都有預設值,我們就認為他是預設的建構函式),不然的話就會出現二義性,編譯不能通過

有引數列表的建構函式都有預設值的話,該函式就是預設有參建構函式,在類中只能有乙個預設建構函式

比如你定義了乙個class a類,裡面沒有寫任何建構函式,則系統會自動給你生成乙個預設建構函式

該函式是a(),該預設建構函式是沒有引數的,所以他同時是乙個無參建構函式。

無參建構函式就是函式沒有引數,說白了就是函式的括號裡沒有任何東東。

系統預設建構函式 a(){}

無參建構函式 = 無參預設建構函式 a()

有參建構函式a(int a){}

有參預設建構函式a(int a = 0)

無參構造物件時可以調動有參預設函式,無參構造物件時候只調動預設建構函式(乙個類只能有乙個預設建構函式可以是系統的、或是無參的、或者是有參的),但是有參構造物件時候就不能調動無參建構函式構造物件,只能通過有參建構函式(可以不匹配,但構造物件是的引數個數要小於建構函式的引數個數),或者有參預設函式(個數也要小於構造函式引數個數)

8.物件的資料成員為公有的,可以成員訪問符訪問。

二、析構函式

當定義乙個物件時候c++會自動呼叫建構函式建立該物件並進行初始化,當物件生命週期結束的時候,c++也會調動乙個登出函式,對其物件進行善後工作,這個特殊的成員函式叫做析構函式

析構函式特點:

1.與類名相同 ,在前面加上~ 例如 ~test();

2.析構函式無返回值,並且無引數列表,就一種寫法。

3.乙個類只能有乙個析構函式,析構函式也可以預設,預設的話系統會自動為你建立乙個析構函式。

3.對物件登出,系統自動調動析構函式.

建構函式與析構函式

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

建構函式與析構函式

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

建構函式與析構函式

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