int* p3 = reinterpret_cast<int*>(&u);//p3 的值为“指向 u.a 的指针”:u.a 与 u 指针可互转换double* p4 = reinterpret_cast<double*>(p3);//p4 的指针为“指向 u.b 的指针”:u.a 与 u.b//指针可互转换,因为都与 u 指针可互转换int* p5 = reinterpret_cast<int*>(&arr);//reinterpr...
int n2 = reinterpret_cast<int>(&o1); int n3 = reinterpret_cast<int&>(f1); int n4 = reinterpret_cast<int&>(o1); 2. 指针【引用】之间互转。如:float*转成int*、CBase&转成int&、CBase*转成CBase2*、CBase&转成CBase2&等 float f1 = 1.0f; CBase1 o1; int* n1 = reinterpret_cast<i...
在C++中,reinterpret_cast可以用于将一个指针或引用类型强制转换为另一个指针或引用类型,即类型不兼容的强制转换。它通常用于实现底层操作或处理非类型安全的代码。一个常见的应用是在第三方库与本地代码通信时,由于类型系统可能不一致,所以需要进行强制类型转换。另一个例子是将指向对象的指针转换为指向字节数组的指针...
int *pi; char *pc = reinterpret_cast<char*>(pi); 1. 2. OK, 在这里你可以看到reinterpret_cast的强大作用,但是要注意的是,他并没有进行二进制的转换,pc指向的真实对象其实还是int的,不是char~ 对于reinterpret_cast运算符要谨慎使用,下面给出一些使用的地方: 参考IBM C++ A pointer to ...
int hello_address = reinterpret_cast<int> (&hello); 1. 2. 3. 4. 动态类型转换 dynamic_cast :父类 ( 对象 / 指针 / 引用 ) 和 子类 ( 对象 / 指针 / 引用 ) 之间的转换 , 是 C++ 语言特有的 , C 语言中没有该转换类型 ; 常量转换 const_cast :只针对 C++ 常量 , 将 常量转为变量 或...
reinterpret_cast<>() reinterpret_cast运算符用于处理无关类型之间的转换,他会产生一个新的值,这个值会有与原始参数(原数据类型)有完全相同的比特位 从指针类型到一个足够大的整数类型 从整数类型或者枚举类型到指针类型 从一个指向函数的指针到另一个不同类型的指向函数的指针 ...
C++引入了static_cast、dynamic_cast、const_cast和reinterpret_cast这4种类型转换操作符,提供了更安全、...
重新解释类型 reinterpret_cast :对指针变量 , 引用变量进行原始的转换 , 即将地址值转成对应的类型 ; 代码语言:javascript 复制 // 重新解释类型 char* 指针类型 -> int* 指针类型char*hello="Hello";//获取 hello 字符串地址 , 将其转为 int 类型int hello_address=reinterpret_cast<int>(&hello); ...
static_cast、dynamic_cast、const_cast、reinterpret_cast 1)static_cast :编译时期的静态类型检查 static_cast < type-id > ( expression ) 该运算符把expression转换成type-id类型,在编译时使用类型信息执行转换,在转换时执行必要的检测(指针越界、类型检查),其操作数相对是安全的 ...
static_cast: 一般的转换,no run-time check.通常,如果你不知道该用哪个,就用这个。 reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。 1)static_cast<T*>(a) 编译器在编译期处理 将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。