C 例項之虛析構函式

2021-06-08 10:56:39 字數 2142 閱讀 9193

(一)父類的析構函式是虛函式時
//

#include "stdafx.h"

#include using namespace std;

class clxbase

; virtual ~clxbase() ;

virtual void dosomething() ;

};class clxderived : public clxbase

; ~clxderived() ;

void dosomething() ;

};/* 情形一

// output from the constructor of class clxbase!

// do something in class clxbase!

// output from the destructor of class clxbase!

int _tmain(int argc, _tchar* argv)

*//* 情形二

// 輸出為:

// output from the constructor of class clxbase!

// output from the constructor of class clxderived!

// do something in class clxderived!

int _tmain(int argc, _tchar* argv)

*//* 情形三

// 輸出為:

// output from the constructor of class clxbase!

// output from the constructor of class clxderived!

// do something in class clxderived!

// output from the destructor of class clxderived!

// output from the destructor of class clxbase!

int _tmain(int argc, _tchar* argv)

*/

/* 情形四  

// output from the constructor of class clxbase!

// output from the constructor of class clxderived!

// do something in class clxderived!

// output from the destructor of class clxderived!

// output from the destructor of class clxbase!

*/ int _tmain(int argc, _tchar* argv)

(二)父類的析構函式不是虛函式時
//

#include "stdafx.h"

#include using namespace std;

class clxbase

; ~clxbase() ;

virtual void dosomething() ;

};class clxderived : public clxbase

; ~clxderived() ;

void dosomething() ;

};/* 情形三

// 輸出為:

// output from the constructor of class clxbase!

// output from the constructor of class clxderived!

// do something in class clxderived!

// output from the destructor of class clxderived!

*/int _tmain(int argc, _tchar* argv)

可見如果父類的析構函式沒有定義為虛函式的話,當用父類指標指向子類物件的時候,delete父類指標,只會呼叫父類中的析構函式,不會呼叫子類中的析構函式。

C 虛析構函式例項

program 15.5.1.cpp include iostream define to version new 1 根據需要是否將 基類 虛構函式編譯為虛析構函式 virtual版 using namespace std class cshape class crectangle public ...

c 之虛析構函式

析構函式的作用是在物件撤銷之前做必要的 清理現場 的工作。當派生類的物件從記憶體中撤銷時一般先呼叫派生類的析構函式,然後再呼叫基類的析構函式。但是,如果用new運算子建立了臨時物件,若基類中有析構函式,並且定義了乙個指向該基類的指標變數。在程式用帶指標引數的delete運算子撤銷物件時,會發生乙個情...

C 之虛析構函式

相信大家都已經清楚了虛函式這個概念。在c 中,建構函式不能宣告為虛函式,而析構函式卻可以宣告為虛函式,大家可能對為什麼要把析構函式宣告為虛函式很疑惑,下面,雲主 博主 就帶大家去會會這個虛析構函式 首先,先看一段 incldue using namespace std class base 建構函式...