C++中的四种强转类型

在C++中一共有四种强转类型分别为:static_cast,const_cast,reinterpret_cast和dynamic_cast

类型转换的一般形式为:cast-name<type>(expression)



顶层const:表示指针本身是个常量    eg:int *const p;

底层const::表示指针所指的对象是一个常量   eg:int const *p


1.static_cast


只要不包括底层const,任何具有明确定义的类型转换都可以用。


2.const_cast


只能改变底层的const。


3.reinterpret_cast


a.在指针之间转换,将一种类型的指针转换为另一种类型的指针

b.将指针转换为一个整形数,但不能用于非指针类型的转换


4.dynamic_cast


将基类的指针或引用转换为派生类的指针或引用(我们称从已定义类产生新类的过程称为派生。已存在的用来派生新类的类为基类,又称父类。由已存在的类派生出的新类称为派生类,又称为子类。例如:从哺乳动物派生出狗,哺乳动物是父类,狗是子类。


对指针进行dynamic_cast :失败返回null,成功返回正常cast后的对象指针

对引用进行dynamic_cast : 失败抛出一个异常的bad_cast,成功返回正常cast后的对象指针


对于向上转换(从派生类转换到基类),无论是指针还是引用都是安全的

对于向下转换类型:

a.基类指针所指对象是派生类类型,这种转换是安全的

b.基类指针所指对象为基类类型,在这种情况下,dynamic_cast在运行时做检查,转换失败,返回结果为0





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值