类型转换运算符

  C++的创始人认为C语言的类型转换太过松散,所以在C++中添加了4个类型转换运算符,使转换过程更规范:
• dynamic_cast;
用于在类层次结构中进行向上转换
dynamic_cast (expression)

• const_cast;/
只执行一种用途的转换,改变值为const或volatile,type-name和expression类型必须相同。
const_cast (expression)

• static_cast;
static_cast (expression)
仅当type-name可被隐式转换为expression所属的类型或expression可被隐式转换为type-name所属的类型时,上述转换才是合法的。假设High是Low的基类,而Pond是一个无关的类,则从High到Low的转换、从Low到High的转换都是合法的,而从Low到Pond的转换是不允许的。

• reinterpret_cast;
reinterpret_cast (expression)
该运算符用于天生危险的类型转换。它不允许删除const,但会执行其他令人生厌的操作。
使用实例:

struct dat {short a; short b;};
long value = 0xA224B118;
dat * pd = reinterpret_cast<dat *>(&value);
cout << hex << pd->a;

reinterpret_cast并不支持所有的类型转换。不能将指针转为更小的整形或浮点型。不能将函数指针转换为数据指针,反之亦然。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值