C++转型操作符

在C语言中旧式转型的语法结构是由一对小括号加上对象名称(标识符)组成,而小括号和对象名称在C++的任何地方都有可能被使用,使得转型操作不那么明显。

为了解决C旧式转型的缺点,C++增加了4个新型转型操作符:static_cast,const_cast,dynam_cast,reinterpret_cast,提高了转型操作的严谨意义和易辨识度。

static_cast

这一操作符的功能几乎和C旧式转型等价,不同的地方主要在于书写方式:

在C旧式转型中会这样写:

(type)expression

现在应该这样写:

static_cast<type>(expression)

static_cast基本上拥有与C旧式转型相同的威力与意义,以及相同的限制。不过其不能改变表达式的常量性,因为有另一个转型操作符const_cast专司此职。

const_cast

此操作符唯一功能便是改变某物的常量性或变易性,不允许将其应用于其他用途。

dynam_cast

该操作符用于执行继承体系中“安全的向下转型或跨系转型操作”,即可以利用dynam_cast将指向基类的指针或引用转型为指向派生类的指针或引用,并得知转型是否成功,dynam_cast会返回对象的内存的起始地址,若转型失败则返回null(当转型对象是指针)或exception(当转型对象是引用)。

和const_cast一样,dynam_cast属于特殊化的转型操作符,其只负责继承体系中的转型操作,无法将其应用于其他用途。

reinterpret_cast

该操作符最常用于转换“函数指针”类型。

其转换结果几乎总是和编译平台息息相关,故其不具备移植性。所以建议尽量少用这个操作符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值