C 基類和派生類的析構函式

2021-10-03 21:14:52 字數 621 閱讀 2910

和建構函式類似,析構函式也不能被繼承。與建構函式不同的是,在派生類的析構函式中不用顯式地呼叫基類的析構函式,因為每個類只有乙個析構函式,編譯器知道如何選擇,無需程式設計師干涉。

另外析構函式的執行順序和建構函式的執行順序也剛好相反:

建立派生類物件時,建構函式的執行順序和繼承順序相同,即先執行基類建構函式,再執行派生類建構函式。

而銷毀派生類物件時,析構函式的執行順序和繼承順序相反,即先執行派生類析構函式,再執行基類析構函式。

請看下面的例子:

#include 

using namespace std;

classa~

a()}

;classb:

public a~b

()};

classc:

public b~c

()};

intmain()

執行結果:

a constructor

b constructor

c constructor

c destructor

b destructor

a destructor

基類和派生類析構函式執行順序

下面是自己實驗結果 沒有宣告虛函式時 include using namespace std class base base class derived public base derived int main 輸出 base contruction derived contruction 1 ba...

C 基類和派生類構造和析構函式的順序!

在visual studio中,新建控制台工程,構造類如下 include using namespace std class cbase cbase class cderive public cbase cderive 對應不同的指標進行 delete 操作,結果如下 i int main int...

模板基類派生類的建構函式和析構函式

include stdafx.h template class a a t c a a a a a operator a a template class b public a b t c a c 非預設建構函式不會呼叫模板基類的非預設建構函式 b b b a b 拷貝建構函式將過載模板基類的拷貝建...