虛析構函式和析構函式中的虛機制

2021-06-20 18:05:11 字數 429 閱讀 8810

虛析構函式:

虛析構函式是為了解決基類指標指向派生類物件,並用基類指標刪除派生類物件時能夠完全釋放記憶體。

class a1;

class a2 ;

class b1:public a1;

class b2:public a2;

int main()

一般來說,如果類中不包含虛函式,就表示這個類不作為基類使用。

如果宣告純虛的析構函式,則必須為純虛析構函式提供乙個函式體。純虛析構函式的作用是可以使基類成為乙個抽象類,不能建立基類物件。

析構函式的虛機制:

對於在析構函式中呼叫虛函式,則虛函式機制將被忽略,即只呼叫本地版本。如果虛機制存在。則析構函式從派生類到基類按層次呼叫,可能會出現被呼叫的函式操作在已經被刪除的物件上。(例如基類析構函式中的虛函式呼叫派生類版本,此時派生類已經被刪除)

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

我們知道析構函式是在物件生命週期結束時自動被呼叫,用來做一些清理工作 如釋放控制代碼,釋放堆記憶體等 防止出現記憶體洩漏。那怎麼還有虛析構函式呢?使用虛析構函式的類一般是要作為基類,被其他類繼承。通過把基類的析構函式宣告為虛函式,就可以通過父類指標來釋放子類物件,從而完成子類的一些清理工作,防止出現...

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

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

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

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