C++中的虛函數、純虛函數

        C++最重要的特性就是多態,而多態,就主要通過虛函數實現的。具體的實現過程是:

基類中的函數定義爲虛函數,派生類發生覆蓋(即函數名稱、參數列表、返回值類型完全相同)的情況下,派生類中的函數也會自動變成虛函數,不論加不加virtual關鍵字。此時,基類與子類對象中都會存在一張虛函數表(因爲含有虛函數),具體虛函數表的結構可以參照這篇文章:http://blog.csdn.net/haoel/article/details/1948051/。如果使用基類指針訪問函數時,會根據指針實際指向的對象的類型來調用基類或子類的函數,這裏就是一種“動態”性,是在程序運行中動態的判斷的。  


   而關於純虛函數,首先純虛函數具體定義格式如下:

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

因爲在很多情況下,基類中不能對虛函數給出有意的實現,或者,基類本身不是實體,僅僅是一種範疇或概念,比如,動物,動物又分爲老虎、熊貓等等,動物本身不能實例化,所以可以通過純虛函數定義,將它在派生類中進行實現,並且在各個派生類中可以有不同的實現,非常靈活。

    此外,含有純虛函數的類成爲抽象類,由於純虛函數沒有具體的實現,因此抽象類不能實例化。


參考文章:

C++虛函數表解析:http://blog.csdn.net/haoel/article/details/1948051/

什麼是虛函數、虛函數作用及使用方法:http://c.biancheng.net/cpp/biancheng/view/244.html


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