Welcome

首页 / 软件开发 / C++ / C++的四个显式的数据类型转换函数

C++的四个显式的数据类型转换函数2011-05-311 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);