【C++基礎】純虛擬函式 - pure virtual function

王曉斌發表於2014-02-10

1. 定義

在函式形參表後面寫上 = 0 以指定純虛擬函式.

virtual void function() = 0;
在派生類中必須實現(重寫)該函式(不要後面的=0, 否則該派生來也不能例項化).

純虛擬函式通常沒有定義(函式體),但實際上我們是可以定義(實現)純虛擬函式的:

class Base  
{  
public: 
	 virtual void function() = 0
     {
 
     }
}; 

class Derived : public Base 
{  
public:
	void function()
	{
	
	}
};


2. 引入原因

  • 很多情況下,基類本身生成物件是不合理的.例如,動物作為一個基類派生出老虎,獅子等派生類,但動物本身生成物件是不合理的;
  • 定義純虛擬函式使派生類僅僅是介面繼承;


3. 抽象類

含有(或繼承)一個或多個純虛擬函式的類是抽象類(abstract class). 使用者不能建立抽象類的物件.

如果在派生類中沒有重新定義純虛擬函式,則這個派生類仍然還是一個抽象類.



相關文章