CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

关于转型动作,我的理解对不对啊?

楼主tarsen(Carry)2003-09-03 10:54:01 在 C/C++ / C语言 提问

有这么一段程序:  
  #include   <typeinfo>  
  #include   <iostream.h>  
  #include   <vcl.h>  
  #pragma   hdrstop  
  //------------------------------------------  
  #pragma   argsused  
  class   d1{  
  public:  
    virtual   void   foo(){}  
  };  
  class   d2{  
  public:  
    virtual   void   bar(){}  
  };  
  class   mi:public   d1,public   d2{};  
  class   mi2:public   mi{};  
   
  int   main(int   argc,   char*   argv[])  
  {  
  using   namespace   std;  
  d2*   D2=new   mi2;  
         
  mi2*   MI2=dynamic_cast<mi2*>(D2);//成功  
  if(MI2)cout<<"MI2   succeed!"<<endl;  
   
  d1*D1=dynamic_cast<d1*>(D2);//成功  
        if(D1)cout<<"D1   Succeed!"<<endl;  
         
        if(typeid(*D2)==typeid(mi2))cout<<"typeid   to   mi2   succeed!"<<endl;//成功  
   
        else   if(typeid(*D2)==typeid(mi))cout<<"typeid   to   mi   succeed!"<<endl;//失败  
   
        else   if(typeid(*D2)==typeid(d2))cout<<"typeid   to   d2   succeed!"<<endl;//失败  
        cin.get();  
        return   0;  
  }  
  我的理解是:  
  由于D2实际上是指向mi2类型对象的,所以D2可以向下转型,所以typeid(*D2)返回的typeinfo对象只能与typeid(mi2)匹配,这就是为什么上面有的会成功,有的会失败的真正原因。 问题点数:0、回复次数:3Top

1 楼ruanyuping()回复于 2003-09-03 12:06:26 得分 0

upTop

2 楼xueweizhong(薛卫忠)回复于 2003-09-03 13:48:36 得分 0

typeid(obj)   返回的是most_derived_object的type的typeinfo,你的理解是正确的。Top

3 楼tarsen(Carry)回复于 2003-09-04 20:33:37 得分 0

谢谢鼓励  
   
   
  Top

相关问题

  • 讨论!送分!!我们何时向Linux转型??
  • 关于转型
  • 向上转型
  • 我理解的是否对
  • 我理解不了这句
  • 查询无法理解,我也无法理解lotus查询了!
  • 对书本不理解 也可能是我不会理解
  • 大哥大姐们帮帮我解决Java关于向上转型
  • 转型的问题
  • 我的理解错在哪里?

关键词

  • virtual
  • mi
  • pragma
  • cout
  • virtual void
  • include

得分解答快速导航

  • 帖主:tarsen

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo