課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之多態(tài)篇
不加virtual的話,同名函數(shù),父類會(huì)被子類隱藏,為什么還能調(diào)用出來父類的,不解?
2019-10-05
源自:C++遠(yuǎn)征之多態(tài)篇 2-1
正在回答
符號(hào)(變量)記錄了地址,類型決定了它會(huì)被怎么解析,在C++里定義一個(gè)變量也要聲明類型的。
雖然這是一個(gè)子類對(duì)象的內(nèi)存塊,但是它用父類指針去解釋這堆內(nèi)存是什么(這是合法的),調(diào)用這個(gè)函數(shù)的時(shí)候是用父類定義的函數(shù).
virtual關(guān)鍵字則聲明調(diào)用這個(gè)函數(shù)的時(shí)候要繞一下(具體實(shí)現(xiàn)是用虛函數(shù)表實(shí)現(xiàn))。
不用virtual聲明:調(diào)用就直接找到函數(shù)的地址(編譯的時(shí)候就確定了)
用virtual聲明:調(diào)用的時(shí)候去找虛函數(shù)表,通過虛函數(shù)表找函數(shù)的地址。
c++語法復(fù)雜就是因?yàn)榻o人提供了多種選擇??磻?yīng)用場(chǎng)景.
域 ::
舉報(bào)
本教程將帶領(lǐng)大家體會(huì)面向?qū)ο笕筇匦灾械亩鄳B(tài)特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2020-12-23
符號(hào)(變量)記錄了地址,類型決定了它會(huì)被怎么解析,在C++里定義一個(gè)變量也要聲明類型的。
雖然這是一個(gè)子類對(duì)象的內(nèi)存塊,但是它用父類指針去解釋這堆內(nèi)存是什么(這是合法的),調(diào)用這個(gè)函數(shù)的時(shí)候是用父類定義的函數(shù).
virtual關(guān)鍵字則聲明調(diào)用這個(gè)函數(shù)的時(shí)候要繞一下(具體實(shí)現(xiàn)是用虛函數(shù)表實(shí)現(xiàn))。
不用virtual聲明:調(diào)用就直接找到函數(shù)的地址(編譯的時(shí)候就確定了)
用virtual聲明:調(diào)用的時(shí)候去找虛函數(shù)表,通過虛函數(shù)表找函數(shù)的地址。
c++語法復(fù)雜就是因?yàn)榻o人提供了多種選擇??磻?yīng)用場(chǎng)景.
2019-10-07
域 ::