課程
/后端開發(fā)
/C++
/C++遠征之多態(tài)篇
if(typeid(*obj)==typeid(Bird))
{obj->foraging;
}
結果不一樣嗎?為什么一定要轉換指針類型呢
2016-05-04
源自:C++遠征之多態(tài)篇 4-1
正在回答
obj 是指向基類的指針,不能直接操作子類的方法。
dynamic_cast主要用于在多態(tài)的時候,它允許在運行時刻進行類型轉換,從而使程序能夠在一個類層次結構中安全地轉換類型,把基類指針(引用)轉換為派生類指針(引用)。
present21 提問者
基類指向子類的指針只可以調用基類自己擁有的成員,而覓食和搬運這兩個是子類特有的成員,父類指針無法直接調用。所以需要將父類指針轉化為子類(Bird)指針,這樣子才可以調用子類獨有的成員函數(shù)!
舉報
本教程將帶領大家體會面向對象三大特性中的多態(tài)特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2016-05-05
obj 是指向基類的指針,不能直接操作子類的方法。
dynamic_cast主要用于在多態(tài)的時候,它允許在運行時刻進行類型轉換,從而使程序能夠在一個類層次結構中安全地轉換類型,把基類指針(引用)轉換為派生類指針(引用)。
2017-08-16
基類指向子類的指針只可以調用基類自己擁有的成員,而覓食和搬運這兩個是子類特有的成員,父類指針無法直接調用。所以需要將父類指針轉化為子類(Bird)指針,這樣子才可以調用子類獨有的成員函數(shù)!