LBa*_*ish 2 c++ initialization class
如何将空列表初始化为C++类中的私有成员?我不想提示用户传入一个空列表,而只是在我创建一个新的类实例时创建一个.
header.h
class MyClass{
public:
MyClass();
private:
list<int> myList;
}
Run Code Online (Sandbox Code Playgroud)
MyClass.cpp
MyClass::MyClass()
:myList(list<int>){}
Run Code Online (Sandbox Code Playgroud)
这不起作用,我在这里缺少什么?
你不需要做任何事情.默认情况下,默认情况下会调用默认构造函数(如名称所示).所以这已经是正确的了:
class MyClass{
public:
MyClass() { } // c++03
MyClass() = default; // c++11
private:
std::list<int> myList;
};
Run Code Online (Sandbox Code Playgroud)
如果您仍希望myList在成员初始化列表中,您可以通过简单地提供空的parens来实现:
class MyClass{
public:
MyClass()
: myList() // explicitly use default ctor
{}
private:
std::list<int> myList;
};
Run Code Online (Sandbox Code Playgroud)