TOP

C++typeidtypename使用
2014-11-17 11:00:25 】 浏览:9905
Tags:typeidtypename 使用

  类型标识符(typeid)


  标准C++的一个新特征是RTTI(Run-Time Type Information运行时类型信息),它为程序在运行时确定对象类型,提供了一种标准方法。在标准C++中,有三个支持RTTI的元素:


   1. 关键字dynamic_cast(动态强制转换):操作符dynamic_cast将一个指向基类的指针转换为一个指向派生类的指针(如果不能正确转换,则返回0――空指针),格式为:


  dynamic_cast < type-id > ( exdivssion )


  dynamic_cast在转化过程中要用到相关类的类型信息类type_info中的信息。该关键字在前面的小小节1.2)中已经介绍过。


   2. 关键字typeid(类型标识符):用来检测指针类型(返回type_info类对象的指针),格式为:


  typeid ( exdivssion ) 或 typeid ( type-id )


  其中,exdivssion为结果为对象的表达式,type-id为类名。


   3. 类type_info(类型信息):存储特定类型的有关信息,定义在 头文件中。type_info类的具体内容由编译器实现来决定,但是至少必须包含返回字符串的name()成员函数。下面是type_info类的VC05实现版本:


  class type_info { // VC05中定义的简化


  public:


  virtual ~type_info();


  bool operator==(const type_info& rhs) const;


  bool operator!=(const type_info& rhs) const;


  int before(const type_info& rhs) const;


  const char* name() const;


  const char* raw_name() const;


  private:


  void *_m_data;


  char _m_d_name[1];


  type_info(const type_info& rhs);


  type_info& operator=(const type_info& rhs);


  static const char *_Name_base(const type_info *prhs, __type_info_node* __ptype_info_node);


  static void _Type_info_dtor(type_info *prhs);


  };



C++typeidtypename使用 https://www.cppentry.com/bencandy.php?fid=80&id=12750

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇c++强制类型转换 下一篇C++输出控制