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

Eni*_*man 0 c++ types downcast

尽管dynamic_cast返回a 0如果正在处理的指针是不兼容的类型,为什么你会避免使用dynamic_cast

luk*_*k32 6

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

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

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

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

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