C++ 初始化列表的简单示例

C++ 初始化列表的简单示例,c++,c++11,initializer-list,C++,C++11,Initializer List,我正在寻找一个如何使用初始值设定项列表的简单示例。以下是我想做的: 我有以下课程: class foo{ public: void set_x(const int ix); void set_y(const int iy); void display(); private: int x; int y; }; 我希望通过以下方式创建此类的对象: foo fooObj = {1, 2}; 我知道在C+

我正在寻找一个如何使用初始值设定项列表的简单示例。以下是我想做的: 我有以下课程:

class foo{
    public:
        void set_x(const int ix);
        void set_y(const int iy);
        void display();
    private:
        int x;
        int y;
};
我希望通过以下方式创建此类的对象:

foo fooObj = {1, 2};

我知道在C++11中使用vector是可能的。如何实现这种行为?

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

foo(int x, int y) : x(x), y(y) {}
如果该类是一个更简单的聚合(如果数据成员是公共的,则您的聚合将是公共的),那么您甚至不需要它-这种初始化方式将依次初始化聚合的每个成员

对于一些更复杂的问题,如
vector
,其中参数的数量可能会有所不同,您需要使用
初始值设定项\u列表
。包括标题:

#include <initializer_list>
#包括
还有一个构造器

foo(std::initializer_list<int>);
foo(std::初始值设定项列表);

该类型就像一个容器,使用
begin()
end()
size()
函数来访问其内容。

常规的双参数构造函数可以正常工作,如果它是聚合类型,则完全不需要任何操作即可
foo
是一个聚合。对不起,我在示例中犯了一个错误。变量应该是私有的。