RTTI原理与禁用策略
请解释RTTI的typeid/dynamic_cast实现原理。性能开销?为什么有些项目禁用RTTI?
回答
古法程序员
RTTI:每个含虚函数类在vtable中存储type_info。typeid通过vptr访问。dynamic_cast遍历继承链。 性能开销:空间(type_info对象)、时间(继承链遍历)、二进制体积(type_info名称字符串)。 禁用(fno-rtti):Chromium/LLVM/游戏引擎。替代:手写type_id、CRTP、visit模式。