課程
/后端開發
/C++
/C++遠征之多態篇
我在cv6.0編譯不能通過???
2018-10-16
源自:C++遠征之多態篇 4-4
正在回答
#include<cstdio> #include<cstring> #include<iostream> #include<typeinfo> using?namespace?std; class?Movable{ public: ????virtual?void?mmove()?=?0; }; class?Bus:public?Movable { public: ????~Bus(){} ????virtual?void?mmove(){ ????????cout?<<?"Bus?--?move"?<<?endl; ????} ????void?carry(){ ????????cout?<<?"Bus?--?carry"?<<?endl; ????} }; class?Tank:public?Movable { public: ????~Tank(){} ????virtual?void?mmove(){ ????????cout?<<?"Tank?--?move"?<<?endl; ????} ????void?shot(){ ????????cout?<<?"Tank?--?shot"?<<?endl; ????} }; void?dosomething(Movable?*obj){ ????obj->mmove(); ??//??cout?<<?typeid(*obj).name()?<<?endl; ????if(?typeid(*obj)?==?typeid(Bus)?){ ????????Bus?*bus?=?dynamic_cast<Bus*>(obj); ????????bus->carry(); ????}else?if(?typeid(*obj)?==?typeid(Tank)?){ ????????Tank?*tank?=?dynamic_cast<Tank*>(obj); ????????tank->shot(); ????} } int?main(){ ????Bus?*bus?=?new?Bus(); ????Tank?*tank?=?new?Tank(); ????dosomething(bus); ????dosomething(tank); ????delete?bus; ????delete?tank; ????bus?=?NULL; ????tank?=?NULL; ????return?0; }
可能是少了頭文件#include<typeinfo>,我用的code::blocks也要自己加頭文件。
慕設計2525588 提問者
NodiSe 回復 慕設計2525588 提問者
慕設計2525588 提問者 回復 NodiSe
舉報
本教程將帶領大家體會面向對象三大特性中的多態特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-10-17
2018-10-17
可能是少了頭文件#include<typeinfo>,我用的code::blocks也要自己加頭文件。