RTTI

3 篇文章 0 订阅

RTTI是运行阶段类型识别的简称,旨在为程序在运行阶段确定对象的类型提供一种标准方式。

  • RTTI只适用于包含虚函数的类层次结构,因为只有对于这种类型的类层次结构,才应该将派生对象的地址赋给基类指针。

支持RTTI的元素:

1. dynamic_cast运算符:
  • dynamic_cast可以在程序运行阶段检测类型转化是否安全。
  • dynamic_cast使得能够在类层次结构中进行向上转换1,用于将派生类的指针转换为基类指针,其主要用途是确保可以安全地调用虚函数
  • 如果指向的对象(*pt)的类型为Type或从Type直接或间接派生而来的类型,则下面的表达式将指针pt转换为Type类型的指针:
    dynamic_cast<Type *>(pt)
    否则,结果为0,即空指针。
2. typeid运算符和type_info类
  • typeid运算符返回一个对type-info对象的引用,其中type_info是在头文件typeinfo中定义的一个类。
  • typeid运算符用来确定两个对象是否为同种类型。它可以接受两种参数:1. 类名;2. 对象名。
    例如,如果pg指向的是一个A类对象,则下述表达式的结果为true,否则为false:
    typeid(A)== typeid(*pg)
  • type_info类包含一个name()成员函数,返回对象所属类的类名。

  1. 向下类型转换和向上类型转换,详见 派生类和基类↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值