C++ -- 四种类型转换

本文介绍了C++中的四种类型转换:static_cast、reinterpret_cast、const_cast和dynamic_cast。static_cast主要用于相关类型间的转换,类似隐式转换;reinterpret_cast用于不相关类型的强制转换;const_cast用于添加或移除const属性,主要用在去掉const;dynamic_cast则用于多态场景下安全地将父类指针或引用转换为子类类型。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值