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