我正在查看一些提供 ac api 的 c++ 包装器代码,我发现很多reinterpret_cast
地方static_cast
都足够了,例如:
struct cpp_object{ void foo(){ /* do something */ } };
/* begin: c api */
typedef void c_object;
void foo(c_object *o)
{
// why this:
reinterpret_cast<cpp_object *>(o)->foo();
// instead of just:
static_cast<cpp_object *>(o)->foo();
}
/* end: c api */
通常我reinterpret_cast
在极少数情况下使用,主要与将缓冲区内容强制位强制转换为已知布局和大小的类型有关,已知位于缓冲区内容内。
所以我问这种做法是否有意义或坚持static_cast
会更好。