这是本主题的复制粘贴 Initializing fields in constructor - initializer list vs constructor body
作者解释了以下等价性:
public : Thing(int _foo, int _bar){
member1 = _foo;
member2 = _bar;
}
is equivalent to
public : Thing(int _foo, int _bar) : member1(), member2(){
member1 = _foo;
member2 = _bar;
}
我的理解是
- 片段 1 是默认初始化的情况(因为没有初始化列表)
- 片段 2 是一个值初始化的例子(空括号)。
这两个如何等价?
最佳答案
你的理解是正确的(假设member1
和member2
有类型`int)。这两种形式不是等价的;在里面
首先,成员根本没有初始化,也不能
使用直到它们被分配。在第二种情况下,
成员将被初始化为0。这两个公式只是
如果成员是用户定义的类类型,则等效
构造函数。
关于c++ - 没有初始化列表与带有空括号的初始化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19407228/