析構函式與建構函式

2021-10-21 07:28:13 字數 1470 閱讀 2366

在c++中,有兩個特殊的函式,建構函式,析構函式。這兩個函式是類中必有的實現,如果我們不提供,編譯器會自動提供空的構造和析構函式。

建構函式:進行初始化操作

析構函式:進行清理操作

建構函式語法:

類名()

1.建構函式沒有返回值,也不寫void

2.建構函式名稱與類名相同

3.建構函式可以有引數,因此可以發生過載

4.程式在呼叫物件的時候會自動呼叫構造,而且只會呼叫一次,所以我們無需手動呼叫

析構函式語法:

~類名()

1.析構函式沒有返回值,也不寫void

2.析構函式名稱與類名相同,在名稱前加符號~

3.析構函式不可以有引數,因此不可以發生過載

4.程式在物件銷毀前會自動呼叫析構,而且只會呼叫一次,所以我們無需手動呼叫

#include

#include

using

namespace std;

class

person

//初始化列表初始化屬性

person

(string name, string pname)

:m_name

(name)

,m_phone

(pname)

//析構函式

~person()

string m_name;

string m_phone;};

intmain()

上述**是乙個簡單的建構函式,析構函式寫法,執行此**,會先輸出建構函式內的內容,在輸出析構函式的內容。

我們在應用構造,析構函式時,更多的是在建構函式裡面進行初始化,而析構函式主要用於釋放在堆中開闢的空間。

還有一種是類中呼叫類:

#include

#include

using

namespace std;

class

phone

~phone()

string m_pname;};

class

person

~person()

string m_name;

phone m_phone;};

void

test01()

intmain()

這裡,我們在person類中呼叫phone類,此時的輸出結果是:

phone的建構函式的呼叫

person的建構函式的呼叫

姓名:zzh

手機:蘋果

person的析構函式的呼叫

phone的析構函式的呼叫

也就是說,它的建構函式輸出順序是先輸出最後被呼叫的那個類,在輸出呼叫類的本身,都執行完畢後,析構函式開始工作,先清理呼叫類本身,在清理被呼叫的類,與建構函式剛好相反。

建構函式與析構函式

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

建構函式與析構函式

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

建構函式與析構函式

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