C++中typeid和dynamic_cast操作的时间复杂度

问题描述

抛开对使用 typeiddynamic_cast 的必要性及其对代码维护的可疑影响的所有担忧,是否有关于这两种动态类型自省机制的性能的任何信息? The Wikipedia article on RTTI 声称:

在只需要类信息的情况下,在非多态上下文中使用 typeid 通常优于 dynamic_cast,因为 typeid 始终是一个恒定时间过程,而 dynamic_cast 可能需要遍历其参数在运行时的类派生格。

但是没有提供引文。因此,我想问一下这种说法是否属实,这两种机制中的一种是否应该在性能方面绝对优于另一种。我无法找到有关这些操作的时间复杂度的任何界限的信息。

解决方法

语言标准没有对任一操作的复杂性强加任何要求。因此,您引用的声明不受规范的支持。大概是基于功能如何,或者已经在实践中实现。

关于可取性声明的更大问题是,目前还不清楚如何在非多态上下文中使用 dynamic_cast


如果你在做面向对象的动态多态,那么你应该更喜欢虚函数。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...