为了账号安全,请及时绑定邮箱和手机立即绑定

用codeblock typeid(i).name()跟老师的不一样,为啥嘞

    int i;    cout<<typeid(i).name()<<endl;

输出的是   i

int main(){    Rect re;    Circle cl;    doSomething(&cl);    return 0;}
void doSomething(Shape *test){    test->calc_area();    cout<<typeid(*test).name()<<endl;    if(typeid(*test) == typeid(Rect))    {        Rect *rect = dynamic_cast<Rect *>(test);        rect->the_rect();    }}

输出的是前面带了个数字的类

http://img1.sycdn.imooc.com//5d803c7200016eb201950078.jpg

正在回答

4 回答

是不是编译器的原因

0 回复 有任何疑惑可以回复我~

我输出的也是i。。。。。。

0 回复 有任何疑惑可以回复我~
void doSomething(Shape *test)
{    
    test->calc_area();    
    cout<<typeid(*test).name()<<endl;    
    if(typeid(*test) == typeid(Rect))    
    {        
        Rect *rect = dynamic_cast<Rect *>(test);        
        rect->the_rect();    
     }
 }

 int main()
 {    
     Rect re;    
     Circle cl;    
     doSomething(&cl);   
      return 0;
  }

codeblock复制出来不带回车我也很绝望

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66252    人
  • 解答问题       314    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

用codeblock typeid(i).name()跟老师的不一样,为啥嘞

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信