运行时类型识别(RTTI)
RTTI是什么?
- 通过RTTI程序能够使用基类的指针或引用来检索这些指针或引用所指对象的实际派生类型
- 通过两个操作符提供RTTI,typeid操作符,dynamic_case操作符。
虚函数和dynamic_case选择
- 当具有基类的引用或指针时,但需要执行不是基类组成部分的派生类操作时,需要动态的强制类型转换。通常,从基类指针获得派生类行为最好的方法是通过虚函数。当使用虚函数时候,编译器自动根据对象的实际类型选择正确的函数。但是,在某些情况下,不可能使用虚函数。在这些情况下,RTTI提供可选的机制。这种机制容易出错,必须知道将类型转换为哪种类型,并且必须检查转换是否成功。
- 注意:对于带虚函数的类,在运行时执行RTTI操作符,对于其他类型,在编译时计算RTTI操作符。