C++虛函數

virtual 關鍵字修飾的函數被稱之爲虛函數,虛函數可以將實現延遲到子類,其目的就是爲了動態多態。

在用法上需要注意一下幾點:

1、其修飾的方法必須是成員方法,不可以是全局函數。

2、不可以是靜態方法,靜態方法是從屬於類的,用virtual修飾會編譯出錯。

3、內聯函數不能是虛函數,如果修飾了,inline特性則會消失。

4、構造函數不能是虛函數,否則會編譯出錯。

純虛函數的實現原理:

      在虛函數原理的基礎上,虛函數表中,虛函數的地址是一個有意義的值,如果是純虛函數就實實在在的寫一個0。

含有純虛函數的類被稱爲抽象類

      含有純虛函數的類被稱爲抽象類,比如上面代碼中的類就是一個抽象類,包含一個計算周長的純虛函數。哪怕只有一個純虛函數,那麼這個類也是一個抽象類,純虛函數沒有函數體,所以抽象類不允許實例化對象,抽象類的子類也可以是一個抽象類。抽象類子類只有把抽象類當中的所有的純虛函數都做了實現纔可以實例化對象。

對於抽象的類來說,我們往往不希望它能實例化,因爲實例化之後也沒什麼用,而對於一些具體的類來說,我們要求必須實現那些要求(純虛函數),使之成爲有具體動作的類。

僅含有純虛函數的類稱爲接口類

如果在抽象類當中僅含有純虛函數而不含其他任何東西,我們稱之爲接口類。

  1. 沒有任何數據成員
  2. 僅有成員函數
  3. 成員函數都是純虛函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章