對象的析構函數調用順序是從派生類到基類
那麼如果基類的指針指向派生類的對象 還能正常的執行析構順序嗎
下面看一個類的聲明
class Subject { public: ~Subject(); Subject(); }; class ConcreteSubject : public Subject { public : ConcreteSubject(); ~ConcreteSubject(); };
Subject * con = new ConcreteSubject(); delete con;
而派生類的析構函數~ConcreteSubject()沒有調用
如果沒有吧基類的析構函數設置為虛函數
那麼是不會在執行時動態調用所指向對象的析構函數
這也就是多態的特性
則在運行時 對象沒有被正常的釋放 會產生一系列的內存問題