1 C++四种类型转换的引入
1.在C语言中也有类型转换
①例1:相近类型之间可进行隐式类型转换
int a = 10;
double b = a; //将int转换为double,然后赋值给b
②例2:不相近类型可以进行强制类型转换
int a = 10;
int *p = (int*)a; //将int强转为int*
对于强制类型转换来说,有时候意义就会发生改变。
2.由于C语言中类型转换的不太规范,有时候不能区分开哪些类型之间具有隐式类型的转换,哪些具有强制类型转换,所以C++里面就引入了四种类型转换,static_cast、reinterpret_cast、const_cast、dynamic_cast。根据这些转换的名字就可以区分开是何种类型的转换。
2 static_cast
1.用于相关类型之间进行类型转换(相当于隐式类型转换);
2.用法:
(1)例如可以将int转换为float,使用方式如下:
void test_static_cast()
{
int a = 10;
float b = static_cast<float>(a); //因为b是float类型,所以<>里填float,也就是需要转换的类型
printf("%d %.2f\n", a, b);
}
运行结果:
(2)如果用于不相关类型,例如把一个int转换为int*,则会出错。因为int和int*不是相关类型,不能进行隐式类型的转换,必须要通过强制类型的转换。
3 reinterpret_cast
1.用于不相关类型进行转换(相当于强制类型转换)。
2.用法:
(1)例1:将一个int类型强制类型转换为int*
void test_static_cast()
{
int a = 10;
int