C++类型转换

C语言中对内置类型可以进行强制转换,但是这种转换是不安全的。

所以一般,目前我们推荐使用C++中的cast函数进行类型转换。

基本数据类型之间的转换

类型的层次转换

static_cast (编译类型检查)

1、基本数据类型之间的转换。如int转char,int转enum等。使用中的转换安全性需要开发者自己去保证。

如int转换为char。那么static_cast只是纯粹的截断,把int的低8位的内容复制到char中,并直接抛弃高位;如果int >127 或 < -127 那么就会出现数据丢失。

2、把空指针类型转换成任意其他类型的空指针。

3、把任何类型的表达式类型转换成void类型。

4、用于类层次结构中父类和子类之间的指针和引用的转换。

对于类层次结构中的转换有两种转换:上行转换和下行转换。

对于static_cast,上行转换时是安全的,但是下行转换是危险的,但是在编译时并无法发现问题。

dynamic_cast(动态类型检查)

1、主要是用于类层次结构之间的类型转换,由于具有运行时类型检查,因而可以保证下行转换的安全性,即转换成功就返回正确类型指针,转换失败就返回NULL。

而static_cast就不是这种类型安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值