struct A {
int m_int;
A (int a = int {}) : m_int(a) {}
};
因此,很明显构造函数按值接受整数,即int a
,后跟赋值运算符并键入int
,并且右括号和右括号关闭。我无法解读后半部分(int {}
)。int a = int {}
是什么意思?请指导我以了解更多信息。我该如何解决?谢谢,高拉夫
A(int a = 0); // a是默认参数。
在您的示例中:
A (int a = int {});//
参数a
是从值初始化的临时整数初始化(未分配)的默认参数,因此,因为它是整数,然后将其值初始化为0,然后用于初始化参数a。 (一个是它的副本)。编译器优化代码以在许多情况下删除副本。
A (int a = int {5.6});// error A (int a = int(5.6));// truncated to 5
后接赋值运算符
没有这不是分配操作。这是默认参数的语法。这意味着您可以在不显式传递参数的情况下调用构造函数,在这种情况下,将传递int {}
。子表达式是用于临时对象的值初始化的语法。