C++ static_cast 和dynamic_cast

static_cast 

编译时检查。用法是static_cast<type>(convertedvariable)。它的作用是把convertedvariable转化为type类型。

static_cast运算符有以下4中用法:

(1)用于基本数据类型的转化。如把int转为char,把int转为short int;

(2)把空指针转为目标类型的空指针

(3)把任意类型的变量/表达式转化为void类型

(4)用于类层次结构中父类和子类之间指针和引用的转换。上行转换(子类到基类)是安全的,而下行转换(基类到子类)不一定安全,是因为static_cast只是在编译时进行类型检查,没有运行时的类型检查。static_cast下行转换不安全的表现是即使下行转换失败,static_cast也返回一个非NULL的指针。

 

dynamic_cast

运行时检查。用法同static_cast。

dynamic_cast主要用于基类和子类之间的指针和引用的转换,由于具有运行时检查,因此可以保证下行转换的安全。这里的安全指的是转换成功后返回正确的类型指针,如果转换失败,则返回NULL。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chengjieno1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值