【发布时间】:2014-05-02 18:00:26
【问题描述】:
尽管dynamic_cast 返回一个0 如果正在处理的指针是不兼容的类型,你为什么要避免使用dynamic_cast?
【问题讨论】:
-
因为如果给出参考它会引发错误。
尽管dynamic_cast 返回一个0 如果正在处理的指针是不兼容的类型,你为什么要避免使用dynamic_cast?
【问题讨论】:
它需要非零运行时间。就是这样。 C-casts 及其 c++ 对应部分(如:reinterpret 或 static)的开销为 0,因为它们是在编译期间执行的。
对某些人来说,重要的部分可能是他们确实需要RTTI,这也引入了一些开销,例如代码大小,因为编译器必须将类型信息包含到二进制文件中,这通常不会这样做。请注意,这可能是编译器中的非标准选项。
还有来自 wiki 的相关注释:“在最初的 C++ 设计中,Bjarne Stroustrup 没有包含运行时类型信息,因为他认为这种机制经常被滥用。”
编辑:关注报价和 cmets。我不确定这是否真的是一个缺点,我想指出,当你使用它时,你应该考虑一下你是否真的需要它。
有些人只是不喜欢它,有些人确实滥用它。
【讨论】:
static_cast。
【讨论】: