• [C++]C++中的运行时类型检测


    Date:
    2014-1-3


    Summary:

    使用C++中的运行时类型检测.(文章重点在于记录本人的使用情况,并非深层讨论RTTI)


    Contents:
    写习惯C#的我,在C++依然存在哪些.NET的惯用写法,所以渴望C++也能提供运行时的类型检测,让我好写出这样的代码:

    if(obj is Type)
    {
       // Do Something
    }
    

      

    虽然这样的思想在C++应该被virtual方法和多肽思想代替,但是为了方便,我只能邪恶的使用RTTI来满足我的需求  

     

    这里使用dynamic_cast可满足需求(这里不对dynamic_cast原理和程序的效率做研究,只限于满足需求)

    class A
    {
    public:
        void aDo(){ cout << "I ' m A" << endl;};
    };
    
    class B
    {
    public:
        void bDo(){cout << "I ' m B" << endl;};
    };
    
    class C : public A,public B
    {
    public:
        void cDo(){cout << "I ' m C"<<endl;};
    };
    
    //////////////////////////////////////////////////////////////
    A* p2 = new C();
        
    // 此时我得到一个对象的引用,我想知道,这个对象是否是A类的子类
    // 这个需求来源的初衷是多继承
    auto p4 = dynamic_cast<A*>(p2);
        
    if(p4)
     {
          //如果p4不为NULL,说明p3指向的对象是A类的子类,那么就可以做你想做得事了
          cout << "B是A的子类对象" << endl;
     }

    Notes:

     

    THE END

    人生就是一局不能Again的DOTA
  • 相关阅读:
    TuShare接口适应
    任泽平金句记录
    分红送股---要注意的两个日期
    解决github无法登录的问题
    持久斗争
    正则语法
    JWT的结构
    付鹏的黄金分析框架
    vscode设置背景图片
    Ubuntu 16.04安装Nginx
  • 原文地址:https://www.cnblogs.com/hellenism/p/3504384.html
Copyright © 2020-2023  润新知