純虛析構函式和虛析構函式的區別在於
純虛析構函式一般用於將類定義為抽象類,這時候有同學會問啦?抽象類不是定義一般成員方法的嗎?原因是這樣的,當我們在類裡面實在找不到可以定義為純虛函式的成員方法的時候,這時候可以將析構函式定義為純析構函式;
純虛構函式的實現需要注意以下幾個地方:
通常的純虛函式不需要函式體,是因為我們一般不會呼叫抽象類的這個函式,只會呼叫派生類的對應函式,但是父類純虛構函式需要要函式體,因為我們知道,當子類繼承父類的時候,假如父類存在純虛函式,子類需要實現該函式,否則就會報錯。
純虛析構函式也一樣,也需要實現,可是呢?能不能像通常的純虛函式一樣,在子類重寫即可,可是,有見過析構函式重寫的嗎,這時候的做法是給純虛析構函式指定函式體
#include
usingnamespace
std;
classfather;
classson:
public
father
};
int上述**報錯: error: undefined reference tomain(int
argc,
char
*argv)
father::~father()這就是我們說到的,純虛析構函式需要指定函式體了
修改後
#include
usingnamespace
std;
classfather;
father::~father()
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...