c 純虛析構函式

2021-08-17 11:52:59 字數 991 閱讀 3636

純虛析構函式和虛析構函式的區別在於

純虛析構函式一般用於將類定義為抽象類,這時候有同學會問啦?抽象類不是定義一般成員方法的嗎?原因是這樣的,當我們在類裡面實在找不到可以定義為純虛函式的成員方法的時候,這時候可以將析構函式定義為純析構函式;

純虛構函式的實現需要注意以下幾個地方:

通常的純虛函式不需要函式體,是因為我們一般不會呼叫抽象類的這個函式,只會呼叫派生類的對應函式,但是父類純虛構函式需要要函式體,因為我們知道,當子類繼承父類的時候,假如父類存在純虛函式,子類需要實現該函式,否則就會報錯。

純虛析構函式也一樣,也需要實現,可是呢?能不能像通常的純虛函式一樣,在子類重寫即可,可是,有見過析構函式重寫的嗎,這時候的做法是給純虛析構函式指定函式體

#include

using

namespace

std;

class

father;

class

son:

public

father

};
int

main(int

argc,

char

*argv)

上述**報錯:     error: undefined reference to 

father::~father()
這就是我們說到的,純虛析構函式需要指定函式體了

修改後

#include

using

namespace

std;

class

father;

father::~father()

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

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

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

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

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

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