c++ - 没有初始化列表与带有空括号的初始化列表

标签 c++ initializer-list

这是本主题的复制粘贴 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 是一个值初始化的例子(空括号)。

这两个如何等价?

最佳答案

你的理解是正确的(假设member1member2 有类型`int)。这两种形式是等价的;在里面 首先,成员根本没有初始化,也不能 使用直到它们被分配。在第二种情况下, 成员将被初始化为0。这两个公式只是 如果成员是用户定义的类类型,则等效 构造函数。

关于c++ - 没有初始化列表与带有空括号的初始化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19407228/

相关文章:

C++::Template 函数 - 从 object.function 获取对象的地址

c++ - 用逗号而不是分号分隔语句会影响程序的速度吗?

c++ - 为什么初始化 map 时不能省略大括号?

c++ - 子类查找表

c++ - 看不懂HDU 2823的解决办法

c++ - 输出 4 组 7 个上升有序且唯一的随机数

c++ - decltype 和括号答案是错误的?

c++ - vs2010中的 vector 初始化

c++ - std::initializer_list 下的数组的生命周期是多少?

c++ - 列表列表的嵌套初始化列表歧义,每个列表都包含一个项目