1 reinterpret_cast(在编译期间实现转换)
reinterpret_cast类型转换函数将一个类型的指针转换成另一个类型的指针。这种转换不用于修改指针变量值数据存放的格式(不改变指针变量值),只需在编译期间重新解释指针的类型就可以做到。
reinterpret_cast可以将指针值转换为一个整型数。但是不能用于非指针类型的转换,否则将不会通过编译。
什么时候使用reinterpret_cast进行数据类型的转换:
(1)将基本类型指针转换成另一个类型的指针。
例如:
基本类型指针的转换
double d = 9.3;
double *pd = &d;
int *pi = reinterpret_cast<int *>(pd);//相当于隐式转换int * pi = (int *)pd;
(2)将一个类的指针转换为另一个类的指针。
类指针类型的转换:
class A{};
class B{};
A* pa = new A;
B* = reinterpret_ cast<B*>pa;
(3)不能转换非指针类型
例如:
将int类型转换为float类型时是不能够转换成功的
int i = 8;
double dl = reinterpret_cast<double>(i);
(4)不能将一个const指针转换成void*类型的指针
const int* pci = 0;
void *pv = reinterpret_cast<void*>(pci);
时间: 2024-08-21 04:30:45