如何深入理解并熟练运用C++中的RTTI和cast运算符?
- 内容介绍
- 相关推荐
本文共计2551个文字,预计阅读时间需要11分钟。
目录
1.RTTI
1.1 dynamic_cast运算符 1.2 typeid运算符2.cast运算符
1.RTTI
RTTI(运行时类型识别)是运行阶段进行类型识别的技术。它帮助我们确定指针或引用指向的具体类型。如何知道指针指向的是哪种对象类型?这是一个常见问题。RTTI通过提供运行时类型信息来解决这个问题。目录
- 1. RTTI
- 1.1 dynamic_cast运算符
- 1.2 typeid运算符
- 2. cast运算符
1. RTTI
RTTI是运行阶段类型识别(Running Type Identificarion)的简称。
如何知道指针指向的是哪种对象?
这是个很常见的问题,由于我们允许使用基类指针指向派生类,所以基类指针指向的对象可能是基类对象,也可能是派生类对象。但是我们需要知道对象种类,因为我们需要使用正确的类方法。
RTTI能解决上述问题。
1.1 dynamic_cast运算符
dynamic_cast是最常用的RTTI组件,它不能回答"指针指向的是哪类对象",但是它能回答"是否可以安全的将对象的地址赋给特定类型指针"。
什么是安全?
例如:A是基类,B是A的派生类,C是B的派生类。
本文共计2551个文字,预计阅读时间需要11分钟。
目录
1.RTTI
1.1 dynamic_cast运算符 1.2 typeid运算符2.cast运算符
1.RTTI
RTTI(运行时类型识别)是运行阶段进行类型识别的技术。它帮助我们确定指针或引用指向的具体类型。如何知道指针指向的是哪种对象类型?这是一个常见问题。RTTI通过提供运行时类型信息来解决这个问题。目录
- 1. RTTI
- 1.1 dynamic_cast运算符
- 1.2 typeid运算符
- 2. cast运算符
1. RTTI
RTTI是运行阶段类型识别(Running Type Identificarion)的简称。
如何知道指针指向的是哪种对象?
这是个很常见的问题,由于我们允许使用基类指针指向派生类,所以基类指针指向的对象可能是基类对象,也可能是派生类对象。但是我们需要知道对象种类,因为我们需要使用正确的类方法。
RTTI能解决上述问题。
1.1 dynamic_cast运算符
dynamic_cast是最常用的RTTI组件,它不能回答"指针指向的是哪类对象",但是它能回答"是否可以安全的将对象的地址赋给特定类型指针"。
什么是安全?
例如:A是基类,B是A的派生类,C是B的派生类。

