RTTI(Runtime Type Infomation)

支持对象的用户在运行时获取到 object 的 complete type

 

主要谈三个关键字: dynamic cast、typeid 、type_info

 

dynamic cast

按照cast 方向分类,可分为upcast(派生类向基类cast)和downcast(基类向派生类cast)两种情况

按照失败原因分类,有以下几种情况

1、指针类型dynamic cast 失败会返回空指针

2、引用类型dynamic cast 失败会抛异常

3、不是有效对象的指针或引用 dynamic cast 失败会抛异常 __non_rtti_object

4、存在共同祖先的多继承,未指定cast路径的情况下编译器报歧义

 

参考链接:https://docs.microsoft.com/en-us/cpp/cpp/run-time-type-information?view=msvc-160

posted @ 2020-11-08 19:31  SwiftChocolate  阅读(47)  评论(0编辑  收藏  举报