在使用C 类型转换时,了解reinterpret_cast 和static_cast 之间的区别至关重要。
reinterpret_cast: 适用于:
在您的场景中,从 C 调用 C 并且 C 对象必须存储在 C void* 中,适当的演员表是:
C++Class* myClass = static_cast<C++Class*>(voidPointer);
为什么static_cast?
根据 C 标准,static_cast 指向和来自 void* 的指针会维护地址。这可以确保在转换并转换回来后,保留原始地址。
reinterpret_cast提供了不太安全的保证。如果您将reinterpret_cast 转换为不同的指针类型然后再返回,则可以保证原始值。然而,中间的 void* 指针的值没有被指定,使得 reinterpret_cast 不太适合这个用例。
因此,对于 void* 之间的转换,static_cast 是首选。
以上是C 类型转换:什么时候应该使用 `reinterpret_cast` 与 `static_cast` 进行 void* 转换?的详细内容。更多信息请关注PHP中文网其他相关文章!