溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++中的虛函數(shù)、純虛函數(shù)

發(fā)布時(shí)間:2020-07-18 19:00:24 來(lái)源:網(wǎng)絡(luò) 閱讀:526 作者:AchengCug 欄目:編程語(yǔ)言

        C++最重要的特性就是多態(tài),而多態(tài),就主要通過(guò)虛函數(shù)實(shí)現(xiàn)的。具體的實(shí)現(xiàn)過(guò)程是:

基類中的函數(shù)定義為虛函數(shù),派生類發(fā)生覆蓋(即函數(shù)名稱、參數(shù)列表、返回值類型完全相同)的情況下,派生類中的函數(shù)也會(huì)自動(dòng)變成虛函數(shù),不論加不加virtual關(guān)鍵字。此時(shí),基類與子類對(duì)象中都會(huì)存在一張?zhí)摵瘮?shù)表(因?yàn)楹刑摵瘮?shù)),具體虛函數(shù)表的結(jié)構(gòu)可以參照這篇文章:http://blog.csdn.net/haoel/article/details/1948051/。如果使用基類指針訪問(wèn)函數(shù)時(shí),會(huì)根據(jù)指針實(shí)際指向的對(duì)象的類型來(lái)調(diào)用基類或子類的函數(shù),這里就是一種“動(dòng)態(tài)”性,是在程序運(yùn)行中動(dòng)態(tài)的判斷的。  


   而關(guān)于純虛函數(shù),首先純虛函數(shù)具體定義格式如下:

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

因?yàn)樵诤芏嗲闆r下,基類中不能對(duì)虛函數(shù)給出有意的實(shí)現(xiàn),或者,基類本身不是實(shí)體,僅僅是一種范疇或概念,比如,動(dòng)物,動(dòng)物又分為老虎、熊貓等等,動(dòng)物本身不能實(shí)例化,所以可以通過(guò)純虛函數(shù)定義,將它在派生類中進(jìn)行實(shí)現(xiàn),并且在各個(gè)派生類中可以有不同的實(shí)現(xiàn),非常靈活。

    此外,含有純虛函數(shù)的類成為抽象類,由于純虛函數(shù)沒(méi)有具體的實(shí)現(xiàn),因此抽象類不能實(shí)例化。


參考文章:

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

什么是虛函數(shù)、虛函數(shù)作用及使用方法:http://c.biancheng.net/cpp/biancheng/view/244.html


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI