關於基類為什麼要宣告析構函式

2021-05-23 18:19:40 字數 777 閱讀 7799

#include

using namespace std;

class base

public:

base(){

cout<<"base"<~base(){

cout<<"~base"public:

concrete(){

cout<<"concrete"<~concrete(){

cout<<"~concrete"base* base=new concrete();

delete base;

return 0;

執行結果:

base

concrete

~base

可見,被delete的不是派生類,而是基類

下面是宣告了虛析構函式的效果

#include

using namespace std;

class base

public:

base(){ 

cout<<"base"cout<<"~base"public:

concrete(){

cout<<"concrete"<~concrete(){

cout<<"~concrete"base* base=new concrete();

delete base;

return 0;

執行結果:

base

concrete

~concrete

~base

這樣就可以徹底的delete掉所有物件了

為什麼基類的析構函式宣告為虛函式?

1 作用 在實現多型時,當用基類的指標操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。2 例項 include using namespace std class father father 1 非虛函式 private int mptr class son public father ...

基類的析構函式為什麼要設為Virtual

include using namespace std class father father virtual father class son public father son int main 對於 father pf null pf new son 繫結子類物件 delete pf 如果基類...

為什麼要將基類的析構函式宣告為虛函式

我們大家都知道,在c 中,當乙個物件銷毀時,析構函式是用來對類物件和物件成員進行釋放記憶體和做一些其他的cleanup操作。析構函式靠 符號來區分,出現在 析構函式名字的前面,當我們去定義乙個 虛析構函式時,你只需要簡單的的在 符號前面 加乙個 virtual標誌就可以了。為什麼需要將析構函式宣告為...