问题描述
抛开对使用 typeid
和 dynamic_cast
的必要性及其对代码维护的可疑影响的所有担忧,是否有关于这两种动态类型自省机制的性能的任何信息? The Wikipedia article on RTTI 声称:
在只需要类信息的情况下,在非多态上下文中使用 typeid 通常优于 dynamic_cast
但是没有提供引文。因此,我想问一下这种说法是否属实,这两种机制中的一种是否应该在性能方面绝对优于另一种。我无法找到有关这些操作的时间复杂度的任何界限的信息。
解决方法
语言标准没有对任一操作的复杂性强加任何要求。因此,您引用的声明不受规范的支持。大概是基于功能如何,或者已经在实践中实现。
关于可取性声明的更大问题是,目前还不清楚如何在非多态上下文中使用 dynamic_cast
。
如果你在做面向对象的动态多态,那么你应该更喜欢虚函数。