純虛函數定義:
純虛函數是一種特殊的虛函數,它的一般格式如下:
class <類名>
{
virtual <類型><函數名>(<參數表>)=0;
…
};
在許多情況下,在基類中不能對虛函數給出有意義的實現,而把它聲明為純虛函數,它的實現留給該基類的衍生類別去做。這就是純虛函數的作用。
純虛函數可以讓類先具有一個操作名稱,而沒有操作內容,讓衍生類別在繼承時再去具體地給出定義。凡是含有純虛函數的類叫做抽象類別。這種類不能聲明對象,只是作為基類為衍生類別服務。除非在衍生類別中完全實現基類中所有的的純虛函數,否則,衍生類別也變成了抽象類別,不能執行個體化對象。
引入原因:
1、為了方便使用多態特性,我們常常需要在基類中定義虛擬函數。
2、在很多情況下,基類本身產生對象是不合情理的。
為瞭解決上述問題,引入了純虛函數的概念,將函數定義為純虛函數。
相關概念:
1、多態性
指相同對象收到不同訊息或不同對象收到相同訊息時產生不同的實現動作。
C++支援兩種多態性:編譯時間多態性,運行時多態性。
a.編譯時間多態性:通過重載函數實現
b 運行時多態性:通過虛函數實現。
2、虛函數
虛函數是在基類中被聲明為virtual,並在衍生類別中重新定義的成員函數,可實現成員函數的動態重載。
3、抽象類別
包含純虛函數的類稱為抽象類別。由於抽象類別包含了沒有定義的純虛函數,所以不能定義抽象類別的對象。
所以,定義一個函數為虛函數,不代表該函數是一個未被實現的函數。定義它為虛函數是為了允許用基類的指標來調用子類的這個函數。
定義一個函數為純虛函數,才代表函數未被實現。定義它是為了實現一個介面,起到一個規範的作用,使得繼承這個類的衍生類別必須實現這個函數。
參考:http://baike.baidu.com/view/502798.htm?func=retitle 百度百科
轉自:http://xingyunbaijunwei.blog.163.com/blog/static/76538067201182835157847/