目录
- C++运行时类型识别
- A.What(什么是运行时类型识别RTTI)
- B.Why(为什么需要RTTI)
- C.dynamic_cast运算符
- Why(dynamic_cast运算符的作用)
- How(如何使用dynamic_cast运算符)
- D.typeid运算符
- E.type_info类
C++运行时类型识别
A.What(什么是运行时类型识别RTTI)
一种编程技术,用于在程序运行时识别对象的类型信息。它通常用于处理动态多态对象,即基类的指针或引用指向派生类对象的情况
B.Why(为什么需要RTTI)
- 动态绑定:RTTI运算在基类的指针或引用指向派生类对象时,根据实际的对象类型来调用正确的函数
- 类型检查:用于在执行期间对对象的类型进行检查,判断其是否符合预期的类型
- 类型转换:RTTI允许基类的指针或引用转换为派生类的指针或引用,以便调用派生类特定的属性或方法
- 反射和元数据处理:RTTI允许在程序运行时获取对象类型的相关信息,如类名、成员变量和成员函数等;这种反射机制可以用于实现插件系统、序列化和反序列化
C.dynamic_cast运算符
Why(dynamic_cast运算符的作用)
- 安全向下转型:将基类的指针或引用转为派生类的指针或引用时,可以用dynamic_cast运算符实现安全的向下转型。它会在运行时进行类型检查,如果转换是有效的(基类的指针或引用指向的是派生类),那么返回派生类的指针或引用;如果转换时无效的(基类的指针或引用没有指向派生类),那么返回空指针
- 支持多态性:dynamic_cast运算符是多态的关键,使用该运算符可以根据实际对象来调用正确的函数
How(如何使用dynamic_cast运算符)
D.typeid运算符
向表达式问"你是什么类型?”
E.type_info类