1. 程式人生 > >C++中的純虛擬函式、抽象類、介面

C++中的純虛擬函式、抽象類、介面

純虛擬函式就是沒有函式體的虛擬函式,通常都以下列格式定義純虛擬函式:

class <類名>
{
    virtual <型別><函式名>(形參表) = 0;
    ...
}

在虛擬函式後面加"=0",這並不代表虛擬函式返回值為0,這只是純虛擬函式的表示形式。純虛擬函式是一種特殊的虛擬函式。

我們說,如果一個類中含有純虛擬函式(一個及以上),則這個類就是一個抽象類。C++的抽象類判定條件就是看這個類是否含有純虛擬函式。

對於含有純虛擬函式的類,也就是我們說的抽象類,是不能例項化的。同時,也沒有必要例項化抽象類。因為抽象類的誕生就是作為基類來使用的,為其派生類做貢獻。這樣,我們就可以用抽象類(基類)指標呼叫子類函數了。

介面

C++中的介面的定義也和純虛擬函式有關。介面是一種特殊的類,比抽象類還要特殊:

如果一個類裡包含純虛擬函式,那麼這個類就是抽象類

如果一個類中只包含純虛擬函式,那麼這個類就是一個介面

所以,介面也是一種特殊的抽象類。