純虛函數
初識純虛函數
● 純虛函數隻在基類中聲明,但沒有定義,是以沒有函數體。
● 純虛函數的聲明隻需在虛函數形參清單後面添加 =0 即可。
● 含有純虛函數的類都是抽象類。
● 隻含有純虛函數的類稱為接口類。
函數聲明
純虛函數的聲明很簡單,就是在虛函數的形參清單後面添加一個 =0 即可,如:
class Cat {
public:
virtual void eat()=0;
};
純虛函數與抽象類
含有純虛函數的類稱為抽象類(注意!!隻要含有就是)。什麼是抽象類?它有以下幾個特點:
● 抽象類不能執行個體化對象。
● 抽象類的派生類也可以是抽象類(會繼承),也可以通過實作全部的純虛函數使其變成非抽象類,進而可以執行個體化對象。
● 抽象類的指針可以指向其派生類對象,并調用派生類對象的成員函數。
舉個例子,在基類Cat中有兩個純虛函數eat()和sleap(),基類不能直接執行個體化一個對象來調用這兩個函數,但在其派生類CatA和CatB中,可以通過實作這兩個函數