我对reinterpret_cast
vs的适用性有点困惑static_cast
。从我读过的内容来看,一般规则是在编译时可以解释类型时使用静态强制转换,因此使用static
. 这也是 C++ 编译器在内部用于隐式转换的转换。
reinterpret_cast
s适用于两种场景:
- 将整数类型转换为指针类型,反之亦然
- 将一种指针类型转换为另一种。我得到的一般想法是这是不可移植的,应该避免。
我有点困惑的是我需要的一种用法,我从 C 调用 C++,并且 C 代码需要保留 C++ 对象,所以基本上它包含一个void*
. 应该使用什么类型转换来在 thevoid *
和 Class 类型之间进行转换?
我见过两者的用法static_cast
和reinterpret_cast
?虽然从我一直在阅读的内容来看,它似乎static
更好,因为演员可以在编译时发生?虽然它说用于reinterpret_cast
从一种指针类型转换为另一种?