C 中建構函式 虛函式 析構函式的執行順序

2021-10-02 11:29:37 字數 594 閱讀 5545

#include using namespace std;

class a

virtual void func()

// 第七步:執行類a的析構函式,輸出"析構函式a"

~a()

virtual void fund()

};class b : public a

// 第四步:執行主函式裡的c.fun(),輸出"開始...",並呼叫func();

// 由於fun()不是建構函式和析構函式,且func()為虛函式

// 所以最終結果輸出"開始...類c"

void fun()

// 第六步:執行類b的析構函式,呼叫fund()函式;

// 由於是在析構函式裡,且fund()為虛函式,所以執行類a裡的fund();

// 輸出清除a

~b()

};class c : public b

void func()

// 第五步:執行類c的析構函式,輸出"清除c"

~c()

void fund()

};int main()

;

C 建構函式 析構函式 虛析構函式

一般地,建立物件和刪除物件時,父類建構函式 子類建構函式 子類析構函式 父類析構函式。特例 如果用new建立了乙個物件,並將父類的指標指向這個子類的物件,那麼用delete撤銷物件時,系統只執行基類的析構函式,而不執行派生類的析構函式。如果希望按照子類析構函式 父類析構函式的順序執行,那麼應該將基類...

建構函式 析構函式 虛析構函式

說析構函式之前,先說下建構函式。建構函式用來完成對物件的一系列初始化操作,主要作用有 1.給建立的物件建立乙個識別符號 2.為物件資料成員開闢記憶體空間 3.完成物件資料成員的初始化 當並未顯示的定義建構函式時,會生成乙個預設的建構函式,預設建構函式不能完成物件資料成員的初始化,只能給物件建立一識別...

C 中的建構函式 虛函式 析構函式

一 建構函式 初始化函式應該是一種特殊的成員函式,能夠在建立物件時被自動呼叫。這就是建構函式。建構函式的名字和類名字相同,它沒有返回值型別 注意 不是void型別 建構函式的引數通常為資料成員提供初始值。建構函式可以過載,在建立物件時,編譯器會根據初始值的型別和個數來呼叫相應的建構函式,因而建構函式...