C++编码军规(002):避免在C++中使用C形式的强制类型转换

军规 避免在C++中使用C形式的强制类型转换


Never use C-style casts within C++

解读


(1)何时需要强制类型转换

先看下面的例子

int ival;
double dval;
ival  = ival * dval;

上述例子中,一个int整形数与一个double类型的浮点数相乘,按照C++内部默认的隐式的转换规则,编译器会首先将ival转换为double类型,然后与dval相乘,最后将相乘的结果(浮点)去掉浮点部分赋值给ival。在这个例子中,将int转换为double是没有必要的,因为3转换为3.000没有任何数值大小上面的改变,所以为了省略这一步骤,我们可以这么干:

int ival;
doubel dval;
ival = ival * (int)dval;

我们直接将dval强制转换为int类型后与ival相乘得到结果。这是一个需要做强制类型转换的比较简单的例子。

(2)C风格 VS C++风格

对于上面强制类型转换的例子,在C++中建议使用命名的强制类型转换,如ival = ival * static_cast<int>(dval), 尽管(int)dvalstatic

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值