铸造:有什么区别。内置类型的T(值)和(T)值?

时间:2011-05-12 13:36:19

标签: c++ casting

  

可能重复:
  C++ cast syntax styles
  What is the difference between (type)value and type(value) ?

在C ++中,当显式地将一个内置类型转换为另一个内置类型时,您可以编写:

int x = (int)c;
int x = int(c);
int d = (double)f;
int d = double(f);

我知道(T)v是一个C风格的演员,我认为其他语法在技术上不是演员,但是其他语法是什么,它的语义是什么? (以及在哪里使用?)

1 个答案:

答案 0 :(得分:0)

T(value)实际上是类型T的初始化,因为它是初始化,如果valueT的类型是,则可以进行隐式类型转换敞篷车。如果T是一个类对象,则调用其中一个构造函数,或者是一个默认构造函数,它接受一个值而Tvalue是隐式可转换类型,或者是复制构造函数具有相同的条件,这两种类型是可隐式转换的。正如您所指出的,(T)value是从value类型到类型T的C风格广播。尽管如此,两者最终都在做同样的事情,因为如果你做了

T var1 = T(value);
T var2 = (T)value;

您将获得完全相同的结果,即创建/返回类型为T的对象,该对象用于初始化类型T的l值。