在C ++中dynamic_cast的缺点是什么?

时间:2014-05-02 18:00:27

标签: c++ types downcast

尽管dynamic_cast如果正在处理的指针属于不兼容类型,0会返回dynamic_cast,为什么要避免使用{{1}}?

2 个答案:

答案 0 :(得分:6)

它需要非零运行时间。就是这样。 C-cast及其c ++计数器部分如:reinterpretstatic是0开销,因为它们是在编译期间执行的。

对某些人来说,重要的部分可能是他们确实需要RTTI,这也会引入一些开销,例如代码大小,因为编译器必须将类型信息包含到二进制中,这通常不会完成。应该注意,这可能是编译器中的非标准选项。

来自wiki的相关说明:" 在最初的C ++设计中,Bjarne Stroustrup没有包含运行时类型信息,因为他认为这种机制经常被滥用。"

编辑:继续引用和评论。我不确定这是否真的是一个缺点,我想指出,当你使用它时,你应该想想你是否确实需要它。

有些人不喜欢它,有些人会误用它。

答案 1 :(得分:2)

运行时开销:

  • 存储RTTI需要更多内存(请参阅link)。
  • 必须在运行时检查类型。

设计问题:

  • 涉及的类型必须是多态的。
  • 通常是代码中出现其他错误的迹象;为什么你需要检查?