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

C++ initialize an empty list in class

本文关键字:一个 列表 初始化 C++      更新时间:2023-10-16

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

标题.h

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

我的班级.cpp

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

这不像写的那样工作,我在这里错过了什么?

你不需要做任何事情。默认构造函数,顾名思义,默认情况下被调用。所以这已经是正确的了:

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

如果您希望成员初始值设定项列表中仍有myList,只需提供空参数即可:

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

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

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