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的工作原理:
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异常
相关文章推荐
- MFC中的RTTI(Runtime Type Identification, 运行时类型识别)详解(参考《深入浅出MFC》)
- RTTI(RunTime Type Identification,运行时类型识别)
- c++模拟MFC中运行时类型识别(RTTI)(Run-Time Type Identification)
- The C++ Standard Library: RTTI(Run-Time Type Identification,运行时类型识别)
- RTTI(Run-Time Type Identification,通过运行时类型识别)
- RTTI (Run-Time Type Identification,通过运行时类型识别)
- C++ Run-Time Type Identification(RTTI)运行时类型识别
- RTTI的魅力(运行时类型识别 Run-time type Identification)
- 7.3 执行期类型识别(Runtime Type Identification,RTTI)
- C++:关于C++的RTTI (运行阶段类型识别)
- [c++ primer plus]RTTI运行阶段类型识别
- C++ - RTTI(RunTime Type Information)运行时类型信息 详解
- RTTI 运行阶段类型识别
- RTTI 运行阶段类型识别
- RTTI运行时类型识别typeid,type_info,dynamic_cast关建字
- C++ RTTI(运行阶段类型识别)
- RTTI 运行阶段类型识别
- Runtime Type Information 运行时类型信息RTTI
- 行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制 多态 类加载
- Thinking in java-27 Runtime Type Identification运行时类型确定