‘static_cast显式转换’

static_cast:用于所有明确定义的转换

1.数据类型从小到大的转换

int x;
static_cast<long>(x);
static_cast<double>(x);

2.窄化数据,数据类型从大到小的转换,可能丢失数据

double x;
static_cast<int>(x);

3.void*类型不能直接转换成其他类型

int *p = static_cast<int*>(malloc(100));
//malloc返回的默认是void*类型

4.可以用于具有继承关系的类型之间的转换

class Base{};
class Dervied:public:Base{};
Dervied d;
Base d = static_cast<Base>(d);
//将子类指针转换成父类指针