純虛函式與抽象基類

2021-08-08 01:51:50 字數 901 閱讀 2037

純虛函式:c++中可以定義這樣一類函式,這樣的函式可以沒有實現。我們把這樣的函式稱為純虛函式。

純虛函式有什麼意義

通過它可以指明乙個虛函式只是提供了乙個可被子型別改寫的介面。

純虛函式是在基類中宣告的虛函式,它可以在基類中有定義,而且派生類必須定義自己的實現方法。基類不能生成物件,可以使用指標或者引用派生類物件。基類不在基類中實現純虛函式的方法是在函式原型後加「=0」

virtual void funtion1()=0

引入原因/純虛函式的作用:

1、為了方便使用多型特性,我們常常需要在基類中定義虛函式。

在很多情況下,基類本身生成物件是不合情理的。例如,動物作為乙個基類可以派生出老虎、孔雀等子類,但動物本身生成物件明顯不合常理。

為了解決上述問題,引入了純虛函式的概念,將函式定義為純虛函式,則編譯器要求在派生類中必須予以重寫以實現多型性。

那麼怎樣定義純虛函式呢?

virtual returntype functionname()= 0;

舉個栗子

#include 

#include

using namespace std;

class animal

virtual

void eat() = 0; //宣告純虛函式,純虛函式可以不用實現

private:

string name;

};class cat : public animal

virtual

void eat()//實現父類的純虛函式,

};int main()

同時含有純虛函式的類稱為抽象類,它不能生成物件。這樣就很好地解決了上述兩個問題。抽象類都是作為基類來使用的。所以我這兒稱之為抽象基類。

虛基類 純虛函式 抽象類

虛基類 純虛函式和抽象類 1 虛基類 在 多繼承 中講過的例子中,由類a,類b1和類b2以及類c組成了類繼承的層次結構。在該結構中,類c的物件將包含兩個類a的子物件。由於類a是派生類c兩條繼承路徑上的乙個公共基類,那麼這個公共基類將在派生類的物件中產生多個基類子物件。如果要想使這個公共基類在派生類中...

純虛函式和抽象基類

純虛函式的格式 virtual 型別 函式名 參數列 0 而我們的純虛函式經常被用來構建抽象基類。抽象基類 當我們僅想對基類進行向上型別轉換,使用它的介面,而不希望使用者實際地建立乙個基類的物件,那麼我們就在基類中加入至少乙個純虛函式 pure virtual function 來使基類稱為抽象 a...

純虛函式和抽象基類

純虛函式就是基類只定義了函式體,沒有具體的實現過程,必須在子類中加以實現。如果基類中含有乙個或多個純虛函式,那麼它就屬於抽象基類,不能被例項化。1 引入抽象基類和純虛函式的原因有以下兩點 1 為了方便的是使用多型特性 2 在很多情況下,基類本身生成物件是不合情理的。抽象基類不能夠被例項化,它定義的純...