什么时候使用reinterpret_cast?
我对 reinterpret_cast 和 static_cast 的适用性不感到困惑。 从我所读的内容中,一般规则是在编译时可以解释类型的情况下使用static强制转换,因此单词 static 。 这是C ++编译器内部也用于隐式强制转换的强制转换。 reinterpret_cast 适用于两种情况: 将整数类型转换为指针类型,反之亦然 将一种指针类型转换为另一种。 我得到的一般想法是,这是不可移植的,应该避免。 我有点困惑的是我需要的一种用法,我从C调用C ++,C代码需要保留在C ++对象上,因此基本上它包含 void* 。 应该使用哪种强制转换在 void * 和Class类型之间进行转换? 我看过 static_cast 和 reinterpret_cast 用法吗? 虽然从我所读的内容来看, static 似乎更好,因为强制转换可以在编译时进行? 尽管它说使用 reinterpret_cast 从一种指针类型转换为另一种指针类型? #1楼 template <class outType, class inType> outType safe_cast(inType pointer) { void* temp = static_cast<void*>(pointer); return static_cast<outType>(temp); }