RTTI是运行时类型识别,C++引入这个机制是为了让程序在运行时能根据基类的指针或引用来获得该指针或引用所指的对象的实际类型。(多态)
我们使用dynamic_cast就是基于RTTI的,我们可以通过编译器对RTTI进行开启或者关闭,关闭之后dynamic_cast就无法使用
Windows:
我们可以右击项目,然后选择属性->C/C++->语言->启用运行时类型信息,这样就可以开启或者关闭相应的RTTI了。
Linux:
而linux中可以以其它方式开启或者关闭,比如可以借助编译器的选项进行开启或者关闭,-fno-rtti
选项来关闭 RTTI。
注意: 默认情况下linux的RTTL是开启的,如果之前执行程序的时候,我们使用了-fno-rtti
选项来关闭 RTTI,下次执行的时候只要不加这个选项就默认开启了。