c++ RTTI例子

原创 2016年08月28日 20:17:17
#include <string>
#include <iostream>
#include <typeinfo>
#include <stdio.h>
using namespace std;

class Base
{
public:
    Base(){
        strcpy(name,"Base");
    }
    virtual void display()
    {
        cout<<"Display Base."<<endl;
    }
protected:
    char name[64];
};

class Child1:public Base
{
public:
    Child1()
    {
        strcpy(name,"Child1");
    }
    void display()
    {
        cout<<"Display Child1."<<endl;
    }
};

class Child2:public Base
{
public:
    Child2()
    {
        strcpy(name,"Child2");
    }
    void display()
    {
        cout<<"Display Child2."<<endl;
    }
};

void Process(Base *type)
{
    if( (typeid(Child1)) == (typeid(*type)) )
    {
        //((Child1*)type)->display();
        Child1* ch=dynamic_cast<Child1*>(type);
        ch->display();
    }
    else if( (typeid(Child2)) == (typeid(*type)) )
    {
        //((Child2*)type)->display();
       Child2* ch=dynamic_cast<Child2*>(type);
       ch->display();
    }
    else
    {
        cout<<"Unknow type!"<<endl;
    }
}

int main(void)
{
    Base *pT1 = new Child1();
    Base *pT2 = new Child2();
    Process(pT1);
    Process(pT2);

    printf("raw_name=%s name=%s hash_code=%d\n",typeid(pT1).raw_name(),typeid(pT1).name(),typeid(pT1).hash_code());
    printf("OK\n");
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c++ RTTI解析

  • 2013年09月23日 14:20
  • 394KB
  • 下载

C++对象模型之RTTI的实现原理

RTTI是Runtime Type Identification的缩写,意思是运行时类型识别。C++引入这个机制是为了让程序在运行时能根据基类的指针或引用来获得该指针或引用所指的对象的实际类型。但是现...

C++ RTTI特性:typeid/dynamic_cast及常用四种类型转换运算符

一、定义:RTTI:Run Time Type Identification ,运行时类型识别:指程序能够使用基类的指针或引用来检索其所指对象的实际派生类型。 二、使用方式:C++中有两个操作符提供R...

C++中的RTTI机制详解

前言 RTTI是”Runtime Type Information”的缩写,意思是运行时类型信息,它提供了运行时确定对象类型的方法。RTTI并不是什么新的东西,很早就有了这个技术,但是,在实际应用中...

关于C++中RTTI的思考

(衡山老妖发表于2005-1-17 9:20:32) RTTI(运行时类型信息),是所有RAD开发工具的基础。 这段时间,因为需要在自己的软件中加入扩展的RTTI功能,于是专门对RTTI进行了研究,...

?[C++_10]RTTI

15 RTTI(运行时类型识别) 程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,...

关于C++中RTTI的思考

关于C++中RTTI的思考     RTTI(运行时类型信息),是所有RAD开发工具的基础。     这段时间,因为需要在自己的软件中加入扩展的RTTI功能,于是专门对RTTI进行了研究,现在...
  • ilvu999
  • ilvu999
  • 2012年01月12日 09:56
  • 225

C++ 类型信息获取 RTTI traits nest 大杂烩

分类 按照作用时期 编译时期 运行时期 模板(偏)特化 虚函数 nest 技术 typeid traits 技术 dynamic_cast decltype按照支...

C++ Primer笔记(十九)运行时类型识别RTTI

通过运行时类型识别(RTTI),程序能够使用基类的指针或引用来检查这些指针或引用所指向对象的实际类型。 通过两个操作符提供RTTI:       1:typeid操作符,它返回指针...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++ RTTI例子
举报原因:
原因补充:

(最多只允许输入30个字)