如何初始化类字段?

Rom*_*kov 7 c++ initialization ctor-initializer

这是一个基本问题,但我很难找到明确的答案.

除了方法中的赋值之外,初始化列表是否是在C++中初始化类字段的唯一方法?

如果我使用错误的术语,这就是我的意思:

class Test
{
public:
    Test(): MyField(47) { }  // acceptable
    int MyField;
};

class Test
{
public:
    int MyField = 47; // invalid: only static const integral data members allowed
};
Run Code Online (Sandbox Code Playgroud)

编辑:特别是,有一个很好的方法来使用struct初始化器初始化struct字段吗?例如:

struct MyStruct { int Number, const char* Text };

MyStruct struct1 = {};  // acceptable: zeroed
MyStruct struct2 = { 47, "Blah" } // acceptable

class MyClass
{
    MyStruct struct3 = ???  // not acceptable
};
Run Code Online (Sandbox Code Playgroud)

小智 6

在C++ x0中,第二种方式也应该起作用.

初始化列表是否是在C++中初始化类字段的唯一方法?

对于您的编译器:是的.