C++中四种强制类型转换

 

static_cast

dynamic_cast

const_cast

reinterpret_cast

作用

实现C++中内置基本数据类型之间的相互转换,也可以基类和派生类之间指针或引用的转换。

 

基类和子类之间指针或引用的转换, 运行时要进行类型检查。

该运算符用来修改类型的const或volatile属性。

可以转化任何内置的数据类型为其他任何的数据类型,也可以转化任何指针类型为其他的类型。它甚至可以转化内置的数据类型为指针。

使用范围

内置类型,基类和子类之间指针或引用的转换

 

主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。

指针,引用,对象

指针、引用、算术类型、函数指针或者成员指针

注意点

(1)static_cast只能在有相互联系的类型中进行相互转换,不一定包含虚函数

(2)没有运行时类型检查来保证转换的安全性。

(1)其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行类型检查。
(2)不能用于内置的基本数据类型的强制转换。
(3)dynamic_cast转换如果成功的话返回的是指向类的指针或引用,转换失败的话则会返回NULL。
(4)使用dynamic_cast进行转换的,基类中一定要有虚函数,否则编译不通过。

常量指针被转化成非常量指针,并且仍然指向原来的对象;
    常量引用被转换成非常量引用,并且仍然指向原来的对象;常量对象被转换成非常量对象。

type-id必须是一个指针、引用、算术类型、函数指针或者成员指针。

用法

static_cast<type_id> (expression)

dynamic_cast<type_id> (expression)

const_cast<type_id> (expression)

reinterpret_cast<type_id> (expression)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值