C++中有很多可以替代reinterpret_cast的方法,根据情况选择最适合的一种:
- static_cast:用于基本类型之间的转换,或者将void指针转换为其他指针类型;
- dynamic_cast:用于指向派生类对象的基类指针或者引用向派生类指针或者引用的转换;
- const_cast:用于去除const属性或加入const属性,但不改变对象本身;
- reinterpret_cast:用于不同类型的指针之间的转换,但不同类型必须具有相同的数据大小和二进制表示形式;
下面是一个使用static_cast替换reinterpret_cast的示例:
void* ptr = nullptr;
int* int_ptr = static_cast(ptr);