Sam*_*ade 3 c++ casting type-conversion implicit-conversion
可能重复:(
类型)值和类型(值)之间有什么区别?
我主要是一个C#开发人员,因此使用以下语法进行大量显式转换:(type)variable以with (int)100.0004d为例.因此,在用C++编写代码时,我经常使用相同的语法.然而,我看到(甚至使用)在同样的铸造是使用语法实现其他情况下的代码type(variable)与int(100.0004)作为一个例子.
我很好奇这两种方法之间的区别是什么,以及使用一种方法是否有任何影响.
例:
double someDouble = 100.00456;
// Cast the double using the (type)variable syntax
int firstCastValue = (int)someDouble;
// Cast the double using the type(variable) syntax
int secondCastValue = int(someDouble);
Run Code Online (Sandbox Code Playgroud)
两者完全相同,任何类型都是如此.
就个人而言,我会避免第一种形式,(T)x支持显式静态转换:
y = static_cast<T>(x);
Run Code Online (Sandbox Code Playgroud)
这表示您要转换 x为该类型T.
第二种形式更像是构造函数调用的召唤,有时候更可取:
v = std::vector<int>(10); // not: v = static_cast<std::vector<int>>(10)
Run Code Online (Sandbox Code Playgroud)
重复一遍,两种形式完全相同,这是你喜欢的品味问题.我会使用静态强制转换"转换"和构造函数语法"构造",如果这有任何意义.