【发布时间】:2011-01-28 18:53:44
【问题描述】:
以下问题的答案描述了 C++ 中 static_cast、dynamic_cast 和 reinterpret_cast 的推荐用法:
When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?
你知道有什么工具可以用来检测这些演员阵容的滥用吗?像 PC-Lint 或 Coverity 静态分析这样的静态分析工具可以做到这一点吗?
提示这个问题的特殊情况是不恰当地使用static_cast 来向下转换一个指针,编译器不会对此发出警告。我想使用一个工具来检测这种情况,而不是假设开发人员永远不会犯这个错误。
【问题讨论】:
-
使用 static_cast 来向下转换指针很好,如果你知道它是你要转换到的正确子类,建议使用它。
-
这是对 static_cast 的适当使用。我正在寻找一种能够检测不当使用的工具(我要转换的子类是错误的)。
-
问题是
static_castscape 代码中可用信息的特殊情况(您可能从设计中的不变量中知道,即使信息不存在于代码中,转换也是正确的)
标签: c++ casting static-analysis downcast dynamic-analysis