chr*_*451 3 c++ static-analysis casting dynamic-analysis downcast
以下问题的答案描述的推荐用法static_cast
,dynamic_cast
以及reinterpret_cast
在C++:
什么时候应该使用static_cast,dynamic_cast,const_cast和reinterpret_cast?
你知道有哪些工具可以用来检测这类演员的滥用吗?像PC-Lint或Coverity Static Analysis这样的静态分析工具会这样做吗?
提示这个问题的特殊情况是不适当地使用static_cast
向下转换指针,编译器没有警告.我想用工具检测这种情况,而不是假设开发人员永远不会犯这个错误.
鉴于没有可靠的方法来告诉指针在编译时指向哪种类型,这在编译时是一个非常难以解决的问题.
最简单的方法是在运行时执行catch,使用宏"safe_cast",它在调试中使用assert和发布中的static_cast编译为dynamic_cast.
现在,在调试期间,如果转换不合适,动态转换将返回NULL并断言.在发布期间也没有开销.
归档时间: |
|
查看次数: |
1142 次 |
最近记录: |