如果基類的析構函式不是虛函式,在特定情況下會導致派生來無法被析構。
情況1:用派生類型別指標繫結派生類例項,析構的時候,不管基類析構函式是不是虛函式,都會正常析構
情況2:用基類型別指標繫結派生類例項,析構的時候,如果基類析構函式不是虛函式,則只會析構基類,不會析構派生類物件,從而造成記憶體洩漏。為什麼會出現這種現象呢,個人認為析構的時候如果沒有虛函式的動態繫結功能,就只根據指標的型別來進行的,而不是根據指標繫結的物件來進行,所以只是呼叫了基類的析構函式;如果基類的析構函式是虛函式,則析構的時候就要根據指標繫結的物件來呼叫對應的析構函式了。
C 析構函式為什麼要為虛函式
1.為什麼基類的析構函式是虛函式?在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。下面 網路 源位址 a.第一段 includeusing namespace std class clxbase clxbase void dosomething class clxd...
C 析構函式為什麼要為虛函式
注 本文內容 於zhice163博文,感謝作者的整理。1.為什麼基類的析構函式是虛函式?在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。下面 網路 源位址 a.第一段 includeusing namespace std class clxbase clxbase ...
C 析構函式為什麼要為虛函式
在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。a.第一段 includeusing namespace std class clxbase clxbase void dosomething class clxderived public clxbase clxde...