虛函數(shù)與純虛函數(shù)

虛函數(shù)與純虛函數(shù)

ID:19562631

大小:32.00 KB

頁數(shù):9頁

時間:2018-10-03

虛函數(shù)與純虛函數(shù)_第1頁
虛函數(shù)與純虛函數(shù)_第2頁
虛函數(shù)與純虛函數(shù)_第3頁
虛函數(shù)與純虛函數(shù)_第4頁
虛函數(shù)與純虛函數(shù)_第5頁
資源描述:

《虛函數(shù)與純虛函數(shù)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、虛函數(shù)和純虛函數(shù)//作者:馬博//創(chuàng)作時間:2013年12月6日1虛函數(shù)從一個基類可以派生出很多層的派生類,雖然在一個類中不能定義兩個相同的成員函數(shù),但是在不同層次的類中可以定義相同的成員函數(shù)。假設(shè)有這樣一種情況,有一個subject類代表學(xué)科,派生自"學(xué)科"這個類的派生類有語文、數(shù)學(xué)、英語和化學(xué),這些類都有一個顯示分?jǐn)?shù)的display成員函數(shù)。每一次要顯示各學(xué)科分?jǐn)?shù)的時候,就要用學(xué)科類的對象調(diào)用display成員函數(shù)。例如(1)CSubjectsubject{CChinesechinese;CEnglishenglish

2、;CMathmath;CChemistrychem;subject.display();chinese.display();english.display();math.display();chem.display();}通過上述代碼可以發(fā)現(xiàn),要進行顯示分?jǐn)?shù)的操作,需用不同類的對象調(diào)用display成員函數(shù),那么有沒有這樣一種方法,可以使得顯示分?jǐn)?shù)這個操作使用的是相同的代碼呢?有!可以使用虛函數(shù)。利用虛函數(shù),可以使用相同的代碼實現(xiàn)不同功能的調(diào)用。例如上面要進行顯示各學(xué)科分?jǐn)?shù)的操作可以改用下面的方法:例如(2)CSubjec

3、tsubject;CChinesechinese;CEnglishenglish;CMathmath;CChemistrychem;CSubject*p;//定義基類指針p=&subject;//將基類對象的地址賦值給基類指針p->display();//通過指針調(diào)用基類的虛函數(shù),相同的代碼不同的操作p=&chinese;p->display();p=&english;p->display();p=&math;p->display();p=&chem;p->dispaly();在代碼中可以看到,顯示各學(xué)科分?jǐn)?shù)的操作,使用的

4、都是如下相同的代碼:p->display();這就是虛函數(shù)的妙用,虛函數(shù)可以是操作趨于一般化。一般化的重要性在于,虛函數(shù)并不是方便眼前的事情,如果某一天突然要添加一門學(xué)科的時候,例如加入一門生物學(xué)科(CBiology),使用相同的操作p->display()就可以將分?jǐn)?shù)顯示出來。知道了虛函數(shù)的妙用,下面來看一下如何聲明虛函數(shù)。虛函數(shù)的聲明和普通成員函數(shù)的聲明相似,不同之處就是在前面加上關(guān)鍵字virtual。例如(3)ClassA{public:virtualvoiddisplay();//聲明一個虛函數(shù)};例如(4)#in

5、cludeusingnamespacestd;classCSubject//聲明一個CSubject類{public:virtualvoiddisplay();//聲明一個虛函數(shù)};voidCSubject::display()//定義CSubject的虛函數(shù){cout<<"thisisSubject"<

6、nese::display()//定義CChinese的虛函數(shù){cout<<"thisisChinese"<

7、virtualvoiddisplay();}voidCEnglich::display()//定義CEnglish的虛函數(shù){cout<<"thisisEnglich"<

8、{CSubject*p;//定義一個指向基類的指針變量CSubjectsubject;//定義一個基類對象CChinesechinese;//定義一個派生類CChinese的對象CEnglishenglish;//定義一個派生自CEnglish的對象CMathmath;//定義一個派生自CMath的對象

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。