初始化列表的简单示例

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是可能的.我该如何实现这种行为?

Mik*_*our 6

在这种情况下,一个简单的构造函数将工作:

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()功能,以访问其内容.