Pau*_*nta 9 c++ performance dynamic-cast casting
dynamic_casts比较慢,但它们比static_casts 更安全(当然,当与对象层次结构一起使用时).我的问题是,在我的调试代码中确保所有(动态)强制转换都是正确的之后,我有什么理由不将它们更改为static_casts吗?
我计划使用以下构造执行此操作.(顺便说一下,你能想到一个更好的名字assert_cast吗?也许debug_cast?)
#if defined(NDEBUG)
template<typename T, typename U>
T assert_cast(U other) {
return static_cast<T>(other);
}
#else
template<typename T, typename U>
T assert_cast(U other) {
return dynamic_cast<T>(other);
}
#endif
Run Code Online (Sandbox Code Playgroud)
编辑: Boost已经有了一些东西:polymorphic_downcast.感谢PlasmaHH指出这一点.
在我在调试代码中确保所有(动态)强制转换都是正确的之后,我有什么理由不将它们更改为 static_casts 吗?
恕我直言,如果您 100% 确定所有内容 dynamic_cast<>都是正确的,那么没有理由不将它们更改为static_cast<>. 你可以改变它们。