类型转换

1、常见的类型转换有2种:隐式转换   和   强制转换

隐式转换:a  =  b

强制转换:char ch = (char);

这两种转换过于简单粗暴,如果出错无法定位

2、C++中提供了4个转换

(1)static_cast  

用于普通类型的转化,凡是可以隐式转换的地方,都可以用,在编译期间会进行类型识别,类型不对,转换失败。

不能用来做不同类型的指针转换,有一个特例,父类指针指向派生类对象时,做的隐式转换不会出现问题

a = static_cast<int>(b)

(2)reinterpret_cast

用来指针之间的转换。

int *pa = reinterpret_cast<int*>(pb);

int *pa = reinterpret_cast<int*>(0x12345678);      整型与指针之间的转换

可以隐式转换的地方用static_cast,需要指针强制转换的用reinterpret_cast  

(3)dynamic_cast

层次关系中的转换,在运行时进行类型识别(RTTI),做的是强制转换,如果类型匹配,转换成功。类型不匹配,转换失败,返回NULL。

进行基类与派生类之间的转换,把基类指针转为派生类指针,一定用dynamic_cast

(4)const_cast

用来去掉只读属性

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值