C++ (T)值和(T)值之间有差异吗?

C++ (T)值和(T)值之间有差异吗?,c++,type-conversion,C++,Type Conversion,(T)值与T(值)之间是否存在差异?例如(float)3.14和float(3.14)。哪个更快或更好?它们具有完全相同的效果和含义: ISO/IEC 14882:2011 5.2.3显式类型转换(功能符号): 简单类型说明符(7.1.6.2)或类型名说明符(14.6)后跟括号中的表达式列表,在表达式列表中构造指定类型的值如果表达式列表是单个表达式,则类型转换表达式与相应的强制转换表达式(5.4)等效 5.4是“显式类型转换(强制转换表示法)”,即(T)强制转换表达式。(T)value使用C样式

(T)值与
T(值)
之间是否存在差异?例如
(float)3.14
float(3.14)
。哪个更快或更好?

它们具有完全相同的效果和含义:

ISO/IEC 14882:2011 5.2.3显式类型转换(功能符号):

简单类型说明符(7.1.6.2)或类型名说明符(14.6)后跟括号中的表达式列表,在表达式列表中构造指定类型的值如果表达式列表是单个表达式,则类型转换表达式与相应的强制转换表达式(5.4)等效


5.4是“显式类型转换(强制转换表示法)”,即(T)强制转换表达式。

(T)value
使用C样式强制转换将
value
强制转换为T,C样式强制转换执行4种不同的强制转换,并且
T(value)
尝试调用
T
的构造函数,并将
value
作为参数(如果你曾经尝试调用类构造函数,你就会知道这个语法)所以通常转换应该更快,因为它是在编译中完成的,对吗?float(a)在运行中调用构造函数,如果编译中不知道,那么它会更慢。对于像float这样的类型,我相信这不重要(我从来没有试着比较过这两种情况)值得注意的是,对于某些类型(例如,
char*
),只有
(T)foo
表示法是合法的。@T.C:对于某些表示法不是type,因为我们仍然可以使用
typedef
,然后使用
char\u指针(值)
@Jarod42 True,我应该更精确一些。对于既不是简单类型说明符也不是类型名说明符表示的类型,更精确一些。