C++最重要的特性就是多態(tài),而多態(tài),就主要通過虛函數(shù)實現(xiàn)的。具體的實現(xiàn)過程是:
創(chuàng)新互聯(lián)主要從事做網(wǎng)站、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)靖遠(yuǎn),10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
基類中的函數(shù)定義為虛函數(shù),派生類發(fā)生覆蓋(即函數(shù)名稱、參數(shù)列表、返回值類型完全相同)的情況下,派生類中的函數(shù)也會自動變成虛函數(shù),不論加不加virtual關(guān)鍵字。此時,基類與子類對象中都會存在一張?zhí)摵瘮?shù)表(因為含有虛函數(shù)),具體虛函數(shù)表的結(jié)構(gòu)可以參照這篇文章:http://blog.csdn.net/haoel/article/details/1948051/。如果使用基類指針訪問函數(shù)時,會根據(jù)指針實際指向的對象的類型來調(diào)用基類或子類的函數(shù),這里就是一種“動態(tài)”性,是在程序運行中動態(tài)的判斷的。
而關(guān)于純虛函數(shù),首先純虛函數(shù)具體定義格式如下:
virtual <類型><函數(shù)名>(<參數(shù)列表>)=0;
因為在很多情況下,基類中不能對虛函數(shù)給出有意的實現(xiàn),或者,基類本身不是實體,僅僅是一種范疇或概念,比如,動物,動物又分為老虎、熊貓等等,動物本身不能實例化,所以可以通過純虛函數(shù)定義,將它在派生類中進(jìn)行實現(xiàn),并且在各個派生類中可以有不同的實現(xiàn),非常靈活。
此外,含有純虛函數(shù)的類成為抽象類,由于純虛函數(shù)沒有具體的實現(xiàn),因此抽象類不能實例化。
參考文章:
C++虛函數(shù)表解析:http://blog.csdn.net/haoel/article/details/1948051/
什么是虛函數(shù)、虛函數(shù)作用及使用方法:http://c.biancheng.net/cpp/biancheng/view/244.html