赋值到类型和空大括号. 语法说明
assignment to type and empty braces. clarification on syntax
我刚刚遇到了一些代码,我相信我从未见过下面显示的语法。
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 {}
。子表达式是临时对象值初始化的语法。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 当使用通配符和null指针调用函数时,对输出的说明
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 关于C++中具有多重继承"this"指针的说明
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 16 位到 10 位转换代码说明
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 赋值到类型和空大括号. 语法说明
- c++模板语法说明
- 模板语法说明
- C++矩形类关于语法的说明
- 语法说明
- 运算符重载语法说明