C++类型转换运算符介绍


前言

C ++四个用于类型转换的运算符。它们被称为类型转换运算符。他们是:

static_cast :静态类型转换
dynamic_cast :动态转换
const_cast :常量转换
reinterpret_cast :重新释义转换

从单词语义上可以知道 cast转换,所以功能就如每一个转义字符一样,下面是每一个 具体介绍。


一、static_cast

所谓的静态,即在编译期内即可决定其类型的转换,用的也是最多的一种。
注意:static_cast不能转换掉expression的const、volatile、或者__unaligned属性。
使用方式:static_cast<目标类型>(标识符)

char a = 'a';
int b = static_cast<int>(a);//正确,将char型数据转换成int型数据
double *c = new double;
void *d = static_cast<void*>(c);//正确,将double指针转换成void指针
int e = 10;
const int f = static_cast<const int>(e);//正确,将int型数据转换成const int型数据
const int g = 20;
int *h = static_cast<int*>(&g);//编译错误,static_cast不能转换掉g的const属性

二、dynamic_cast

用于多态中父子类之间的多态转换
使用方式:dynamic_cast<目标类型>(标识符)

三、const_cast

主要是去掉const属性,但要注意目标类型只能是指针或者引用
使用方式:const_cast<目标类型>(标识符)

四、reinterpret_cast

数据的二进制重新解释,但是不改变其值。
使用方式:reinterpret_cast<目标类型>(标识符)
比如讲char转换为uchar

char  char1[] = {0x99,0x88,0x12,0x00};
uchar * char2 = reinterpret_cast<uchar*> char1;

总结

新式转换较旧式转换更受欢迎。新式转型较易辨别,能简化“找出类型系统在哪个地方被破坏”的过程;二是各转型动作的目标愈窄化,编译器愈能诊断出错误的运用。
尽量少使用转型操作,尤其是dynamic_cast,耗时较高,会导致性能的下降,尽量使用其他方法替代。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的挖掘机

谢谢大家的厚爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值