如何用这个c ++设置对象数据成员

时间:2015-02-10 20:58:57

标签: c++

所以这个问题可能是重复的,但是当我搜索时我找不到任何东西。所以在C ++中,如果我有

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

Foo(int xIn, int yIn){
    x = xIn;
    y = yIn;
}

是不是可以使用this进行作业?所以你不必更改传入的变量的名称?

4 个答案:

答案 0 :(得分:6)

是的,有:

Foo(int x, int y) {
    this->x = x;
    this->y = y;
}

此处xy隐藏了成员变量,但您可以使用this->xthis->y来访问它们。

答案 1 :(得分:2)

惯用法是使用初始化列表:

Foo(int x, int y) : x(x), y(y) {}

当然,如果出于某种原因想要访问构造函数体中的隐藏数据成员,可以使用this指针:

Foo(int x, int y) {
    this->x = x;
    ....

答案 2 :(得分:1)

在C ++ 11中,首选方法是

class Foo{
    int x;
    int y;

public:
    Foo(int x, int y): x{x}, y{y}{}
};

或传统方式,

class Foo{
    int x;
    int y;
public:

    Foo(int x, int y): x(x), y(y){}
};

答案 3 :(得分:1)

如果您正在尝试观察范围规则并保持清晰度,则可以在分配变量时始终使用类范围运算符

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

Foo(int x, int y) {
   Foo::x = x;
   Foo::y = y;
}