c++中dynamic_cast的缺点是什么?
What are the disadvantages of dynamic_cast in C++?
尽管事实上dynamic_cast
返回0
,如果正在处理的指针是不兼容的类型,为什么要避免使用dynamic_cast
呢?
运行时间非零。差不多就是这样。c -强制转换和它们的c++对应部分,如:reinterpret
或static
是零开销的,因为它们是在编译期间执行的。
对于某些人来说,重要的部分可能是他们确实需要RTTI
,这也引入了一些开销,例如代码大小,因为编译器必须将类型信息包含到二进制中,这通常是不做的。请注意,这可能是编译器中的非标准选项。
另一个来自wiki的相关注释:"在最初的c++设计中,Bjarne Stroustrup没有包含运行时类型信息,因为他认为这种机制经常被滥用。"
编辑:在引用和评论之后。我不确定这是否真的是一个缺点,我想指出的是,当你使用它时,你应该考虑一下你是否真的需要它。
有些人不喜欢它,有些人滥用它。
运行时开销:
- 需要更多的内存来存储RTTI。
- 类型必须在运行时检查。
- 涉及的类型必须是多态的
- 通常是代码中其他错误的标志;你为什么要检查?
相关文章:
- 使用rdtsc进行基准测试的缺点是什么
- 将字段(在类中)定义为引用的缺点是什么?
- 嵌套向量的缺点是什么?
- 模板而不是接口的缺点是什么?(C++)
- 在C 项目中剩下未使用的类的缺点是什么?
- 在64位系统上创建一个非常大的数组的缺点是什么
- C++协方差返回类型的缺点是什么
- 在将GITHUB库包含在您的项目中之前,汇编GitHub库的优点 /缺点是什么?
- 单源项目结构的缺点是什么?
- 仅使用UDP托管小型服务器应用程序的缺点是什么
- 抛弃灾难的例外 - 缺点是什么
- 使用继承来减少重复代码的缺点是什么
- 以不同方式实现可变参数构造函数的模板类:每个版本的优点和缺点是什么
- 如果使单一实例构造函数受到保护,缺点是什么 - 继承 - C++11.
- 为C++提供标准GUI库的缺点是什么
- 如何访问类变量?公共方法/getters与继承.优点和缺点是什么
- 对所有异常使用一个基类的缺点是什么?
- 使用AVL树的缺点是什么?
- "upcasting"的缺点是什么?
- OpenGL函数在命名空间gl中的缺点是什么?