零初始化类成员,它是C ++ 11中的结构

时间:2017-06-06 11:02:33

标签: c++ c++11 struct

我已经尝试过阅读C ++文档,但我觉得很难理解。我喜欢将我的结构初始化为零:

MyStruct myStruct = {};

但是如果我将这个结构作为类成员,我如何在构造函数中初始化?

struct MyStruct
{
 int x;
 int y;
}

class MyClass
{
 MyStruct mMyStruct;
public:
 MyClass();
} 



// is this fine?
MyClass::MyClass()
 : mMyStruct()
{}

// or this?
MyClass::MyClass()
 : mMyStruct({})
{}

// or do I need this?
MyClass::MyClass()
 : mMyStruct()
{
 mMyStruct = {};
}

2 个答案:

答案 0 :(得分:3)

一种方法是:

class MyClass
{
    MyStruct mMyStruct = {};
public:
    MyClass();   // actually unnecessary
};

答案 1 :(得分:1)

您可以使用符号

MyClass::MyClass()
 : mMyStruct{}
{
}

请参阅http://en.cppreference.com/w/cpp/language/initializer_list

你知道这些文件太糟糕了。