在 C++ 中何時使用虛擬解構函式?
Scott Meyers 在《高效 C++》中這樣說道 −
如果一個類有任何虛擬函式,它應該有一個虛解構函式,而未設計為基類或未設計為以多型方式使用的類不應宣告虛解構函式。
因此,你應該在多型基類中將解構函式宣告為虛擬函式。這是因為,如果你使用派生建構函式建立基類的物件 −
Base *b = new Derived(); // use b delete b;
如果 Base 的解構函式不是虛擬函式,那麼在這種情況下 delete b 會產生未定義的行為。對於解構函式的呼叫將像任何非虛程式碼一樣得到解決。因此,將對基類的解構函式進行呼叫,但是不對派生類的解構函式進行呼叫,這將導致出現資源洩漏。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP