純虛函式: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 在很多情況下,基類本身生成物件是不合情理的。抽象基類不能夠被例項化,它定義的純...