可能是重复问题:
何时应该使用 static_cast、dynamic_cast 和 reinterpret_cast?
我在C++中使用了一个C函数,其中以void类型参数传递的结构体直接存储了相同的结构体类型。
例如,在C中。
void getdata(void *data){
Testitem *ti=data;//Testitem is of struct type.
}
在C++中我使用static_cast来做同样的事情:
void foo::getdata(void *data){
Testitem *ti = static_cast<Testitem*>(data);
}
当我使用reinterpret_cast
时,它执行相同的操作,将结构体强制转换。
当我使用Testitem *it=(Testitem *)data;
时,也是执行相同的操作。
但是,使用这三种方法如何影响结构体。
static_cast
和reinterpret_cast
从void*
转换时得到的结果相同:https://dev59.com/GMHqa4cB1Zd3GeqPuzZY#68137312。 - anton_rh