天天看點

面試題| 純虛函數

純虛函數

初識純虛函數

● 純虛函數隻在基類中聲明,但沒有定義,是以沒有函數體。

● 純虛函數的聲明隻需在虛函數形參清單後面添加 =0 即可。

● 含有純虛函數的類都是抽象類。

● 隻含有純虛函數的類稱為接口類。

函數聲明

純虛函數的聲明很簡單,就是在虛函數的形參清單後面添加一個 =0 即可,如:

class Cat {
  public:
    virtual void eat()=0;
};
           

純虛函數與抽象類

含有純虛函數的類稱為抽象類(注意!!隻要含有就是)。什麼是抽象類?它有以下幾個特點:

● 抽象類不能執行個體化對象。

● 抽象類的派生類也可以是抽象類(會繼承),也可以通過實作全部的純虛函數使其變成非抽象類,進而可以執行個體化對象。

● 抽象類的指針可以指向其派生類對象,并調用派生類對象的成員函數。

舉個例子,在基類Cat中有兩個純虛函數eat()和sleap(),基類不能直接執行個體化一個對象來調用這兩個函數,但在其派生類CatA和CatB中,可以通過實作這兩個函數

繼續閱讀