C 為什麼設定基類的析構函式為虛函式

2021-07-09 23:09:28 字數 570 閱讀 5298

物件的析構函式呼叫順序是從派生類到基類

那麼如果基類的指標指向派生類的物件 還能正常的執行析構順序嗎

下面看乙個類的宣告

[cpp]view plain

copy

class

subject  

;  class

concretesubject : 

public

subject  

;  

建立基類的指標 並刪除該物件

[cpp]view plain

copy

subject * con = 

newconcretesubject();  

delete

con;  

結果顯示只呼叫了基類的析構函式~subject()

而派生類的析構函式~concretesubject()沒有呼叫

如果沒有吧基類的析構函式設定為虛函式

那麼是不會在執行時動態呼叫所指向物件的析構函式

則在執行時 物件沒有被正常的釋放 會產生一系列的記憶體問題

C 基類析構函式為什麼要定義為虛函式

在c 實現多型裡,有乙個關於 析構函式的重寫問題 基類中的析構函式如果是虛函式,那麼派生類的析構函式就重寫了基類的析構函式。這裡他們的函式名不相同,看起來違背了重寫的規則,但實際上編譯器對析構函式的名稱做了特殊處理,編譯後析構函式的名稱統一處理成destructor。那麼為什麼要把基類中的析構函式寫...

析構函式為什麼設定為虛函式

1.第一段 include using namespace std class clxbase clxbase void dosomething class clxderived public clxbase clxderived void dosomething int main 執行結果 do ...

為什麼C 基類析構函式寫成虛函式

下面的 舉例 virtual.cpp 定義控制台應用程式的入口點。include stdafx.h include define maxlen 128 class cemployee cemployee protected private class coperator public cemploy...