<分区>
我正在查看一些提供 c 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
会更好。