我在一些C++代码中使用了旧式的强制转换,现在希望将其转换为新式的。我查看了运算符优先级和结合性文档,但未能理解其含义。
( double ) myValueA() / myValueB()
等同于
static_cast<double>( myValueA() ) / myValueB()
或者到
static_cast<double>( myValueA() / myValueB() )
我想其他数字运算符(*/+-)的答案也一样。
我在一些C++代码中使用了旧式的强制转换,现在希望将其转换为新式的。我查看了运算符优先级和结合性文档,但未能理解其含义。
( double ) myValueA() / myValueB()
等同于
static_cast<double>( myValueA() ) / myValueB()
static_cast<double>( myValueA() / myValueB() )
我想其他数字运算符(*/+-)的答案也一样。
myValueA()
返回一个值,对于该值,static_cast<double>
就足够了,那么将(double)
视为正确的转换方式。只有在使用static_cast
无法进行转换时,才会使用reinterpret_cast
。此外,请注意,显式类型转换可以去除const
,而reinterpret_cast
和static_cast
都不能这样做。因此,某些显式类型转换可能还需要const_cast
作为转换系列的一部分。 - François Andrieux