C ++在类中初始化一个空列表

时间:2016-02-07 16:13:30

标签: c++ class initialization

如何将空列表初始化为C ++类中的私有成员?我不想提示用户传入一个空列表,而只是在我创建一个新的类实例时创建一个。

header.h

class MyClass{
public:
    MyClass();
private:
    list<int> myList;
}

MyClass.cpp

MyClass::MyClass()
    :myList(list<int>){}

这不是书面的,我在这里缺少什么?

2 个答案:

答案 0 :(得分:8)

你不需要做任何事情。默认情况下,默认情况下会调用默认构造函数(如名称所示)。所以这已经是正确的了:

class MyClass{
public:
    MyClass() { }         // c++03
    MyClass() = default; // c++11
private:
    std::list<int> myList;
};

如果您希望在成员初始值设定项列表中仍然有myList,则可以通过简单地提供空的parens来实现:

class MyClass{
public:
    MyClass()
    : myList() // explicitly use default ctor
   {}
private:
    std::list<int> myList;
};

答案 1 :(得分:2)

如果要选择提交用户定义的值,可以使用构造函数的初始化列表。此外,将列表默认为空内容。

class MyClass{
public:
    MyClass(list<int> theList = {}) : myList(theList) {}

private:
    list<int> myList;
}