可能重复:
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风格的演员,我认为其他语法在技术上不是演员,但是其他语法是什么,它的语义是什么? (以及在哪里使用?)
答案 0 :(得分:0)
T(value)
实际上是类型T
的初始化,因为它是初始化,如果value
和T
的类型是,则可以进行隐式类型转换敞篷车。如果T
是一个类对象,则调用其中一个构造函数,或者是一个默认构造函数,它接受一个值而T
和value
是隐式可转换类型,或者是复制构造函数具有相同的条件,这两种类型是可隐式转换的。正如您所指出的,(T)value
是从value
类型到类型T
的C风格广播。尽管如此,两者最终都在做同样的事情,因为如果你做了
T var1 = T(value);
T var2 = (T)value;
您将获得完全相同的结果,即创建/返回类型为T
的对象,该对象用于初始化类型T
的l值。