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

how to set object data members with this c++ with this

本文关键字:数据成员 c++ 对象 何设置 设置      更新时间:2023-10-16

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

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

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

难道没有办法用this做作业吗?所以您不必更改传入变量的名称?

是的,有:

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

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

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

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

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

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

在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){}
};

如果您试图遵守作用域规则并保持清晰,则在分配变量时可以始终使用类作用域运算符

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