C++ 铸造:内置类型的btw.T(值)和(T)值有什么区别?
可能的重复项:C++ 铸造:内置类型的btw.T(值)和(T)值有什么区别?,c++,casting,C++,Casting,可能的重复项: C++中,当显式地将一个内置类型转换为另一个内置类型时,可以编写: int x = (int)c; int x = int(c); int d = (double)f; int d = double(f); 我知道(T)v是C风格的强制转换,我认为另一种语法在技术上不是强制转换,但是另一种语法叫什么,它的语义是什么?(在哪里使用哪个?T(value)实际上是类型T的初始化,因为它是一个初始化,如果value和T的类型是可转换的,则可以进行隐式类型转换。如果T是类对象,则调
C++中,当显式地将一个内置类型转换为另一个内置类型时,可以编写:
int x = (int)c;
int x = int(c);
int d = (double)f;
int d = double(f);
我知道(T)v
是C风格的强制转换,我认为另一种语法在技术上不是强制转换,但是另一种语法叫什么,它的语义是什么?(在哪里使用哪个?T(value)
实际上是类型T
的初始化,因为它是一个初始化,如果value
和T
的类型是可转换的,则可以进行隐式类型转换。如果T
是类对象,则调用它的一个构造函数,要么调用接受单个值且T
和value
为隐式可转换类型的默认构造函数,要么调用具有两个类型隐式可转换相同条件的副本构造函数<正如您所注意到的,code>(T)value,是从value
类型转换为T
类型的C样式转换。不过,如果你真的这么做了,他们最终都会在幕后做同样的事情
T var1 = T(value);
T var2 = (T)value;
您将得到完全相同的结果,即创建/返回类型为
T
的对象,该对象可用于初始化类型为T
的l值。Tomalak:是的,我的错;我抄错了题#。。。