C++类型转换

四中类型转换
  • static_cast
  • reinterpret_cast
  • const_cast
  • dynamic_cast

static_cast

静态检测转换是否合法。

例如类A和B不相干,则A*不能转为B*。如果A继承自B,则A*B*可以互相转换。

dynamic_cast

在static_cast的基础上,使用RTTI进行运行时刻类型检查,转换失败返回NULL。

例如M和N继承自A,N*转为A*后,再转为M*就会返回NULL;但是可以再转回N*

const_cast

用来去掉const类型属性。例如将const char*转为char*。不到万不得已不要用。

啥叫万不得已呢?例如有一个旧的代码库需要传递char*,而实际上应该传递const char*,在自己的代码里自然需要使用const char*,到最后调用旧的代码库时再去掉const属性。

reinterpret_cast

二进制层面的类型转换,只是转换编译器编译时刻记录的类型,运行时刻不会进行任何字节层面的转换。

例如A和B不相干,A*转为B*可以转换。

回到顶部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值