原文:C++中基類的析構函數為什么要用virtual虛析構函數

知識背景 要弄明白這個問題,首先要了解下C 中的動態綁定。 關於動態綁定的講解,請參閱: C 中的動態類型與動態綁定 虛函數 多態實現 正題 直接的講,C 中基類采用virtual虛析構函數是為了防止內存泄漏。具體地說,如果派生類中申請了內存空間,並在其析構函數中對這些內存空間進行釋放。假設基類中采用的是非虛析構函數,當刪除基類指針指向的派生類對象時就不會觸發動態綁定,因而只會調用基類的析構函數, ...

2016-08-31 10:32 1 33099 推薦指數:

查看詳情

C++基類析構函數定義為函數的原因

1:每個析構函數只會清理自己的成員(成員函數前沒有virtual)。2:可能是基類的指針指向派生類的對象,當析構一個指向派生類的成員的基類指針,這時程序不知道這么辦,可能會造成內存的泄露,因此此時基類析構函數要定義為函數基類指針可以指向派生類的對象(多態),如果刪除該指針delete[]p ...

Tue Feb 19 20:00:00 CST 2019 0 934
c++為什么基類析構函數要寫成析構函數

答:在實現多態時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。 代碼說明如下 第一段代碼: 運行結果: Do something in class ClxDerived! Output from the destructor ...

Sun May 10 01:39:00 CST 2020 0 631
有繼承的C++析構函數一定要用virtual

先補下virtual是啥 函數是指一個類你希望重載的成員函數,當你用一個基類指針或引用指向一個繼承類對象的時候,你調用一個函數,實際調用的是繼承類的版本。 先貼個代碼,再解釋 在代碼尾部的注釋就是輸出。 Base的析構函數沒有virtual Base1 ...

Tue Oct 23 17:41:00 CST 2012 2 4680
[C++]析構函數的作用

轉載自: https://blog.csdn.net/derkampf/article/details/62093252 C++析構函數到底什么時候有用的,什么作用呢。 一.析構函數的作用 總的來說析構函數是為了避免內存泄露 ...

Thu Dec 27 19:30:00 CST 2018 1 1789
為什么基類析構函數函數

注:本文章內容大部分來自網站整理。 1.為什么基類析構函數函數?   在實現多態時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。   下面轉自網絡:源地址 http://blog.sina.com.cn/s/blog_7c ...

Wed Jul 11 00:06:00 CST 2012 0 5171
(轉)=========C++析構函數可以為純函數嗎?

轉載自:http://blog.csdn.net/yapian8/article/details/46418687 眾所周知,在實現多態的過程,一般將基類析構函數設為virtual,以便在delete的時候能夠多態的鏈式調用。那么析構函數是否可以設為純呢? class CBase ...

Mon Jul 03 23:44:00 CST 2017 0 1220
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM