第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

父類指針指向子類內(nèi)存,為什么當(dāng)父類的成員函數(shù)不加virtual時(shí),訪問的還是父類的成員函數(shù),而不是子類同名的成員函數(shù)?

父類指針指向子類內(nèi)存,為什么當(dāng)父類的成員函數(shù)不加virtual時(shí),訪問的還是父類的成員函數(shù),而不是子類同名的成員函數(shù)?

畢竟父類指向的是子類的內(nèi)存,只能訪問到子類的函數(shù),和繼承自父類的函數(shù)。


正在回答

3 回答

我認(rèn)為是這樣,類的成員函數(shù)都在代碼區(qū),不同的類的成員函數(shù)在代碼區(qū)有自己的類名稱空間限制,類的虛函數(shù)在虛函數(shù)表中,程序執(zhí)行的時(shí)候,是先在虛函數(shù)表中找該成員函數(shù),如果沒有找到,就去該類在代碼區(qū)的成員函數(shù)中去找。

所以如果父類的成員函數(shù)加上virtual時(shí),訪問的時(shí)候是先在虛函數(shù)表中查找,如果找到了,就執(zhí)行,沒找到就再在該類的代碼區(qū)查找。所以父類普通的成員函數(shù)只能在父類的代碼區(qū)找到。

也就是說通過父類指針找普通成員函數(shù)時(shí),雖然父類指針指向子類對(duì)象,通過父類指針只能訪問子類對(duì)象的數(shù)據(jù)成員(部分,父類獨(dú)有的),不能訪問子類對(duì)象的成員函數(shù)(與父類同名),如果想要訪問,只能將子類的成員函數(shù)變成虛函數(shù),放進(jìn)虛函數(shù)表中,這樣父類指針才可以優(yōu)先找到虛函數(shù)表中的成員函數(shù),但是這個(gè)成員函數(shù)是子類的;

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

淺夏流年 提問者

非常感謝!
2017-05-05 回復(fù) 有任何疑惑可以回復(fù)我~

當(dāng)基類中的數(shù)據(jù)成員和成員函數(shù)與派生類的相同的時(shí)候,又因?yàn)榕缮惖某蓡T是在父類之下的,所以在沒有虛函數(shù)的情況下,就會(huì)是先訪問父類的。如果有虛函數(shù)的時(shí)候,就要先考慮虛函數(shù)表了,因?yàn)楦割惖暮妥宇惖耐?,子類中的虛函?shù)的地址就會(huì)覆蓋住父類的,從而訪問的是子類的

0 回復(fù) 有任何疑惑可以回復(fù)我~

父類指針指向子類內(nèi)存,應(yīng)該是子類里的成員函數(shù)對(duì)父類進(jìn)行了初始化吧,指針始終還是父類的,只是其成員可以由子類初始化,那么用該指針調(diào)用同名函數(shù)時(shí)自然調(diào)用的是被子類初始化了的父類成員函數(shù)了。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
C++遠(yuǎn)征之多態(tài)篇
  • 參與學(xué)習(xí)       66225    人
  • 解答問題       329    個(gè)

本教程將帶領(lǐng)大家體會(huì)面向?qū)ο笕筇匦灾械亩鄳B(tài)特性

進(jìn)入課程

父類指針指向子類內(nèi)存,為什么當(dāng)父類的成員函數(shù)不加virtual時(shí),訪問的還是父類的成員函數(shù),而不是子類同名的成員函數(shù)?

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)