課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之多態(tài)篇
if(typeid(*obj)==typeid(Bird))
{obj->foraging;
}
結(jié)果不一樣嗎?為什么一定要轉(zhuǎn)換指針類型呢
2016-05-04
源自:C++遠(yuǎn)征之多態(tài)篇 4-1
正在回答
obj 是指向基類的指針,不能直接操作子類的方法。
dynamic_cast主要用于在多態(tài)的時(shí)候,它允許在運(yùn)行時(shí)刻進(jìn)行類型轉(zhuǎn)換,從而使程序能夠在一個(gè)類層次結(jié)構(gòu)中安全地轉(zhuǎn)換類型,把基類指針(引用)轉(zhuǎn)換為派生類指針(引用)。
present21 提問者
基類指向子類的指針只可以調(diào)用基類自己擁有的成員,而覓食和搬運(yùn)這兩個(gè)是子類特有的成員,父類指針無法直接調(diào)用。所以需要將父類指針轉(zhuǎn)化為子類(Bird)指針,這樣子才可以調(diào)用子類獨(dú)有的成員函數(shù)!
舉報(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)
2016-05-05
obj 是指向基類的指針,不能直接操作子類的方法。
dynamic_cast主要用于在多態(tài)的時(shí)候,它允許在運(yùn)行時(shí)刻進(jìn)行類型轉(zhuǎn)換,從而使程序能夠在一個(gè)類層次結(jié)構(gòu)中安全地轉(zhuǎn)換類型,把基類指針(引用)轉(zhuǎn)換為派生類指針(引用)。
2017-08-16
基類指向子類的指針只可以調(diào)用基類自己擁有的成員,而覓食和搬運(yùn)這兩個(gè)是子類特有的成員,父類指針無法直接調(diào)用。所以需要將父類指針轉(zhuǎn)化為子類(Bird)指針,這樣子才可以調(diào)用子類獨(dú)有的成員函數(shù)!