军规 避免在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&#