想不通,求指教
先上代碼吧,不相干的省略
#include?<iostream> #include?<typeinfo> using?namespace?std; class?Fly{ public: //virtual?void?fly()=0; }; class?Bird:public?Fly{ public: /*virtual?void?fly(){ cout<<"i?am?a?bird,i?can?fly"<<endl; }*/ }; class?Plane:public?Fly{ public: /*virtual?void?fly(){ cout<<"i?am?a?plane,i?can?fly!"<<endl; }*/ }; void?doSomething(Fly?*f){ cout<<"i?am?"<<typeid(*f).name()<<endl; } int?main(){ Fly?*f=new?Plane(); doSomething(f); delete?f; f=NULL; Bird?b; doSomething(&b); return?0; }
打印結(jié)果是
i am 3Fly
i am 3Fly
而把類底下的注釋取消,打印結(jié)果是
i am 5Plane
i am 4Bird
這里的3 4 5是什么 ?怎么來的?
2017-06-11
我也是,用devC++編譯的
2016-11-05
本人運(yùn)行一切正常,沒出現(xiàn)LZ說的情況