定義
空虛函式是一個完整的函式,它有函式體,只是函式體內沒有任何語句罷了。一個類中,如果含有空虛函式,但是沒有純虛函式的情況下,是可以實例化對象的。
空虛函式與純虛函式的區別:
純虛函式只有聲明,沒有實現。含有純虛函式的類不可以實例化對象。
在程式開發過程中有時需要在類的某個子孫中定義虛函式,但並不是必須保持派生層次中虛函式鏈條上的每個虛函式都需要具體實現,如果某層虛函式無需重新實現但又必須提供該虛函式的說明,則只需要在相應層定義空的虛函式即可,這樣就可以維繫類派生層次中虛函式路徑的存在。
舉例:
例子一
class Shape
{
public:
virtual float GetArea()=0;//純虛函式
virtual float GetPerim()=0;//純虛函式
};
把其中的純虛函式換成空虛函式
也就是如下
class Shape
{
public:
virtual float GetArea
{}//空虛函式
virtual float GetPerim
{}//空虛函式
};
例子二
class A{
virtual void fun()=0;//純虛函式
};//只要類中含有一個純虛函式,這樣的類不可以實例化對象。
class B{
virtual void fun(){}//空虛函式,是一個完整的函式,有函式體定義{}
};//這樣的類可以實例化對象。