C ++构造函数自动变量赋值

时间:2013-09-24 07:53:20

标签: c++ variables assign

假设我有班级:

class foobar {
public:
    foobar(int _x, int _y) {
        x = _x;
        y = _y;
    }
    int x, y;
};

有没有办法将x和y分配给传递给foobar(int,int)的值而不是自己分配它们?

[答案] 初始化列表是我需要使用的(感谢所有人澄清)

我可以这样编写代码:

class foobar {
public:
    foobar(int x, int y) : x(x), y(y) {}
    int x, y;
};

这意味着我不必强调我的输入参数x(x)将按预期工作

2 个答案:

答案 0 :(得分:2)

您可以使用member-initialization-list。这仍然是你的工作,但这是一个更好的做法:

foobar(int _x, int _y): x(_x), y(_y) {
//                    ^^^^^^^^^^^^^^
}

如果您真的不想分配这些值,可以使用没有构造函数的类(aggregate class)初始化这些成员:

class foo
{
public:
    int x, y;
};
foo{1, 2}; // <= Braces initialization

工作示例:http://ideone.com/NlbkKb

答案 1 :(得分:2)

如果您的类是聚合,则可以使用大括号语法对其进行初始化:

class foobar
{
public:
    int x;
    int y;
};

foobar f { 1, 2 };

否则,您应该初始化构造函数中的元素:

class foobar
{
public:
    foobar(int x_, int y_) : x(x_), y(y_)  {  }
private:
    int x;
    int y;
};

foobar f(1, 2);

(您也可以在第二种情况下使用大括号语法。)