使用{}初始化班级成员

时间:2020-05-12 05:58:02

标签: c++ initialization

有人给了我以下代码(一部分):

struct MyStruct
{
    int x = {};
    int y = {};

};

我以前从未见过这种语法,用{}初始化是什么意思?

2 个答案:

答案 0 :(得分:3)

这是default member initializer(自C ++ 11起),

通过默认的成员初始化程序,该初始化程序是成员声明中包含的大括号或等于初始值设定项,如果从构造函数的成员初始化程序列表中省略了该成员,则使用该初始值设定项。

初始化本身是copy-list-initialization(自C ++ 11起),实际上,数据成员xy将被值初始化(并在构建时进行零初始化) -in类型)到0

答案 1 :(得分:1)

自C ++ 11标准以来,有两种方法来初始化成员变量:

  1. 使用构造函数初始化列表作为“常规”:

    struct Foo
    {
        int x;
    
        Foo()
            : x(0)
        {
        }
    };
    
  2. 使用新的 inline 初始化,其中成员使用常规初始化语法获取其“默认”值:

    struct Foo
    {
        int x = 0;
    };
    

这两种方法都适用于许多等效的值和类型。

相关问题