我已经看过这些,看起来似乎是c ++代码中的功能,但我不知道他们做了什么或他们是什么,他们似乎做类似的东西,但他们看起来不像类型转换,那么它们是什么?
他们看起来像这样:int(x)
其中x
是一些数字输入,我一直在网上搜索但我还没有找到任何关于他们的信息(可能因为我不知道他们叫什么。
任何帮助?
答案 0 :(得分:5)
这称为“功能表示法”,它是显式类型转换(“强制转换”)的一种形式。 C ++ 11,5.2.3:
5.2.3显式类型转换(功能表示法)
- simple-type-specifier(7.1.6.2)或typename-specifier(14.6)后跟带括号的expression-list,在给定表达式列表的情况下构造指定类型的值。如果表达式列表是单个表达式,则类型转换表达式与相应的强制转换表达式(5.4)等效(在定义中,如果在含义中定义)。如果指定的类型是类类型,则类类型应完整。如果表达式列表指定多个单独的值,则类型应为具有适当声明的构造函数的类(8.5,12.1),并且表达式T(x1,x2,...)与声明T t等效。 (x1,x2,......);对于一些发明的临时变量t,结果是t的值作为prvalue。
醇>
答案 1 :(得分:4)
int(x)
是functional notation for type-casting。
C ++是一种强类型语言。许多转换,特别是那些暗示对值的不同解释的转换,需要显式转换,在C ++中称为类型转换。泛型类型转换有两种主要的语法: functional 和c-like:
这些通用形式的类型转换功能足以满足基本数据类型的大多数需求。
示例:
double x = 10.3;
int y;
y = int (x); // functional notation
y = (int) x; // c-like cast notation
查看what is the difference between c-like casting & functional casting?了解详情。
答案 2 :(得分:3)
这是类型转换运算符的替代语法,使其看起来像复制构造函数语法,因此在复制构造函数所在的位置在语法上是合适的。 int(x)
和(int)x
具有相同的效果。