C++初始化列表和构造函数
C++ initialization list and constructor
>C++14 提供了初始化列表,我们可以使用它来初始化类或结构中的元素。以下代码中的两种初始化方式有什么区别?
struct MyItem {
MyItem() : val{0} {}
int val;
};
struct MyItem {
MyItem() {}
int val{0};
};
在您的情况下,没有区别。第一种情况使用 mem 初始值设定项来初始化val
。第二个使用大括号或等于初始值设定项。当成员不存在 mem 初始值设定项时,将使用该大括号或等于初始值设定项。如果存在 mem 初始值设定项,则优先,并忽略大括号或等于初始值设定项。
人们当然可以构建存在差异的人为示例......
const int i = 42;
struct S1 {
S1(int i): val{i} {} // sets val to the parameter i
int val;
};
struct S2 {
S2(int i) {} // param is ignored
int val{i}; // sets val to 42
};
相关文章:
- 一对向量构造函数:初始值设定项列表与显式构造
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 构造函数/函数声明参数列表中的统一初始化
- 在初始化列表之外手动调用基类的构造函数
- 采用初始值设定项列表的构造函数
- 类内初始化与构造函数初始化列表的顺序
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 大括号括起来的初始值设定项列表中的短 c++ 类构造函数
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- 如何在构造函数初始值设定项列表中使用 n 个元素初始化 std::vector<std::time_t>
- 在构造函数初始化列表中使用 std::variant
- 没有构造函数模型的实例::模型匹配参数列表
- 在c++中为链接列表创建复制构造函数/函数
- 解释了构造函数成员初始化列表
- C2436 '{ctor}':构造函数初始值设定项列表中的成员函数或嵌套类
- 不带初始值设定项的构造函数列表,其中包含带有已删除构造函数的对象
- 空向量的构造函数列表初始化
- C++ 中的构造函数列表
- 为什么初始化构造函数列表参数时会发生异常?
- 如何在类构造函数列表中初始化结构