Tom*_*zyk 4 c++ initializer-list c++11
我正在寻找一个如何使用初始化列表的简单示例.这就是我想要做的:我有以下课程:
class foo{
public:
void set_x(const int ix);
void set_y(const int iy);
void display();
private:
int x;
int y;
};
Run Code Online (Sandbox Code Playgroud)
我想以下列方式创建此类的对象:
foo fooObj = {1, 2};
Run Code Online (Sandbox Code Playgroud)
我知道在C++ 11中使用vector是可能的.我该如何实现这种行为?
在这种情况下,一个简单的构造函数将工作:
foo(int x, int y) : x(x), y(y) {}
Run Code Online (Sandbox Code Playgroud)
如果这个类是一个更简单的聚合(如果数据成员是公共的那么你的那个)那么你甚至不需要 - 这种初始化方式将依次初始化聚合的每个成员.
对于更复杂的事情,比如vector,参数的数量可以变化,你需要使用initializer_list.包括标题:
#include <initializer_list>
Run Code Online (Sandbox Code Playgroud)
和一个构造函数
foo(std::initializer_list<int>);
Run Code Online (Sandbox Code Playgroud)
类型的作用就像一个容器,具有begin(),end()和size()功能,以访问其内容.