天天看點

純虛函數和抽象類

純虛函數:

純虛函數是一種特殊的虛函數,格式如下:

class <類名>

{

  virtual <類型><函數名>(<參數表>)=0;

  …

};

基類中不對虛函數給出有意義有實作,而把它說明為純虛函數,它的實作留給該基類的派生類去做。

抽象類:

 帶有純虛函數的類稱為抽象類。抽象類是一種特殊的類,它是為了抽象和設計的目的而建立的,它處于繼承層次結構的較上層。抽象類是不能定義對象的,在實際中為了強調一個類是抽象類,可将該類的構造函數說明為保護的通路控制權限。抽象類的主要作用是将有關的組織在一個繼承層次結構中,由它來為它們提供一個公共的根,相關的子類是從這個根派生出來的。抽象類刻畫了一組子類的操作接口的通用語義,這些語義也傳給子類。一般而言,抽象類隻描述這組子類共同的操作接口,而完整的實作留給子類。抽象類隻能作為基類來使用,其純虛函數的實作由派生類給出。如果派生類沒有重新定義純虛函數,而派生類隻是繼承基類的純虛函數,則這個派生類仍然還是一個抽象類。如果派生類中給出了基類純虛函數的實作,則該派生類就不再是抽象類了,它是一個可以建立對象的具體類了。

抽象類不能執行個體化 (  new的時候執行個體化)