虛析構函式

2021-06-25 23:02:20 字數 753 閱讀 3145

虛析構函式是為了解決

基類的指標指向派生類物件,並用基類的指標刪除派生類物件。

如果某個類不包含

虛函式,那一般是表示它將不作為乙個

基類來使用。當乙個類不準備作為

基類使用時,使析構函式為虛一般是個壞主意。因為它會為類增加乙個

虛函式表,使得物件的體積翻倍,還有可能降低其可移植性。

所以基本的一條是:無故的宣告虛析構函式和永遠不去宣告一樣是錯誤的。實際上,很多人這樣總結:當且僅當類裡包含至少乙個

虛函式的時候才去宣告虛析構函式。

抽象類是準備被用做基類的,基類必須要有乙個虛析構函式,純虛函式會產生抽象類,所以方法很簡單:在想要成為抽象類的類裡宣告乙個純虛析構函式。

虛析構函式是為了解決這樣的乙個問題:

基類的指標指向派生類物件,並用基類的指標刪除派生類物件。

如果某個類不包含

虛函式,那一般是表示它將不作為乙個

基類來使用。當乙個類不準備作為

基類使用時,使析構函式為虛一般是個壞主意。因為它會為類增加乙個

虛函式表,使得物件的體積翻倍,還有可能降低其可移植性。

所以基本的一條是:

無故的宣告虛析構函式和永遠不去宣告一樣是錯誤的

。實際上,很多人這樣總結:當且僅當類裡包含至少乙個

虛函式的時候才去宣告虛析構函式。

抽象類是準備被用做

基類的,基類必須要有乙個虛析構函式,

純虛函式會產生抽象類,所以方法很簡單:在想要成為抽象類的類裡宣告乙個純虛析構函式。

C 虛析構函式 純虛析構函式

虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...

C 虛析構函式 純虛析構函式

虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...

C 虛析構函式 純虛析構函式

虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...