程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++ 為什麼設置基類的析構函數為虛函數

C++ 為什麼設置基類的析構函數為虛函數

編輯:關於C++

對象的析構函數調用順序是從派生類到基類

那麼如果基類的指針指向派生類的對象 還能正常的執行析構順序嗎


下面看一個類的聲明

class Subject
{
public:
	~Subject();

	Subject();

};

class ConcreteSubject : public Subject
{
public :
	ConcreteSubject();

	~ConcreteSubject();

};

創建基類的指針 並刪除該對象

Subject * con = new ConcreteSubject();
delete con;

結果顯示只調用了基類的析構函數~Subject()

而派生類的析構函數~ConcreteSubject()沒有調用


如果沒有吧基類的析構函數設置為虛函數

那麼是不會在執行時動態調用所指向對象的析構函數

這也就是多態的特性

則在運行時 對象沒有被正常的釋放 會產生一系列的內存問題



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved