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...
reinterpret_cast对指针【引用】进行原始转换,不做任何偏移处理(当然:多继承时,也不会做偏移处理) 1. 将指针【引用】转换成整型。如:float*转成int、CBase*转成int、float&转成int、CBase&转成int等 float f1 = 1.0f; CBase o1; int n1 = reinterpret_cast<int>(&f1); int n2 = reinterpret_cast<int...
int *pi; char *pc = reinterpret_cast<char*>(pi); 1. 2. OK, 在这里你可以看到reinterpret_cast的强大作用,但是要注意的是,他并没有进行二进制的转换,pc指向的真实对象其实还是int的,不是char~ 对于reinterpret_cast运算符要谨慎使用,下面给出一些使用的地方: 参考IBM C++ A pointer to ...
在C++中,reinterpret_cast可以用于将一个指针或引用类型强制转换为另一个指针或引用类型,即类型不兼容的强制转换。它通常用于实现底层操作或处理非类型安全的代码。一个常见的应用是在第三方库与本地代码通信时,由于类型系统可能不一致,所以需要进行强制类型转换。另一个例子是将指向对象的指针转换为指向字节数组的指针...
static_cast: 一般的转换,no run-time check.通常,如果你不知道该用哪个,就用这个。 reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。 1)static_cast<T*>(a) 编译器在编译期处理 将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。
int hello_address = reinterpret_cast<int> (&hello); 1. 2. 3. 4. 动态类型转换 dynamic_cast :父类 ( 对象 / 指针 / 引用 ) 和 子类 ( 对象 / 指针 / 引用 ) 之间的转换 , 是 C++ 语言特有的 , C 语言中没有该转换类型 ; 常量转换 const_cast :只针对 C++ 常量 , 将 常量转为变量 或...
用法:reinterpret_cast<type_id> (expression) type-id必须是一个指针、引用、算术类型、函数指针或者成员指针。 它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)。
int* pi = reinterpret_cast<int*>(pf);简而言之,static_cast<> 将尝试转换,举例来说,如float-到-integer,而reinterpret_cast<>简单改变编译器的意图重新考虑那个对象作为另一类型。 指针类型(Pointer Types) 指针转换有点复杂,我们将在本文的剩余部分使用下面的类: ...
用法:reinterpret_cast< type_name >(expression) 用于危险类型的转换 structData{shorta;shortb;};intmain(){longnNum=16909320;// 0000 0001 0000 0010 0000 0100 0000 1000Data*data=reinterpret_cast<Data*>(&nNum);// a == 1032;(0000 0100 0000 1000)// b == 258; (0000 0001 0000 0010)cout...
reinterpret_cast 是C++ 中的一种类型转换操作符,用于执行不同类型之间的强制类型转换。它可以将一个指针或引用转换为另一种指针或引用,甚至可以将指针转换为整数类型,或者整数类型转换为指针。reinterpret_cast 提供了最大的灵活性,但也是最不安全的一种类型转换,因此在使用时需要格外小心。 #include <iostream> int...