1.純虛函數
在許多情況下,在基類中不能對虛函數給出有意義的實現,而把它說明為純虛函數,它的實現留給該基類的派生類去做。純虛函數是一種特殊的虛函數,它的一般定義形式如下:
class<類名>
{
virtual<類型><函數名>(<參數表>)=0;
…
};
2.抽象類
一個類可以說明多個純虛函數,帶有純虛函數的類稱為抽象類。抽象類的主要作用是將有關的子類組織在一個繼承層次結構中,由它來為它們提供一個公共的根,相關的子類是從這個根派生出來的。抽象類至少含有一個虛函數,而且至少有一個虛函數是純虛函數,以便將它與空的虛函數區分開來。
關于抽象類的使用有下面幾點規定:
(l)抽象類只能用作其他類的基類,不能建立抽象類實例。
(2)抽象類不能用作參數類型、函數返回類型或顯示轉換的類型。
(3)可以說明指向抽象類的指針和引用,此指針可以指向它的派生類,進而實現多態性。
在成員函數內可以調用純虛函數,但在構造函數或析構函數內調用一個純虛函數將導致程序運行錯誤,因為沒有為純虛函數定義代碼。