您的位置:首页 > 其它

RTTI运行阶段类型识别(Runtime Type Identification)

2013-07-15 22:35 351 查看
RTTI目的:为程序在运行阶段确定对象的类型提供一种标准形式

RTTI的工作原理:

C++有3种支持RTTI的元素

1>dynamic_cast操作符

判断是否可以安全地将对象的地址赋给特定类型的指针

dynamic_cast<Type * >(ptr)

如果指向的对象的类型为Type或者是从Type类直接或间接继承而来的类型,则表达式将ptr转换为Type类型的指针,否则,结果为空指针

将dynamic_cast用于引用

问题:没有与空指针对应的引用值,无法使用特殊的引用值指示失败

解决:当请求不正确时,dynamic_cast引发bad_cast异常(在头文件typeinfo中)

#include<typeinfo>

try{

 A &a=dynamic_cast<A &>(r);

}

catch(bad_cast &){};

2>typeid操作符返回一个指出对象类型的值

3>type_info结构存储了有关特定类型的信息

typeid(A)==typeid(*ptr)   //结果为true或false

ptr若为空指针,则引发bad_typeid异常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  RTTI