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

如何用这个C++来设置对象数据成员,c++,C++,所以这个问题可能是重复的,但当我搜索时,我什么也没找到。所以在C++中如果我有< /P> class Foo{ public: int x; int y; Foo(int x, int y); }; 及 有没有办法用这个做作业?因此,您不必更改传入变量的名称?是的,有: Foo(int x, int y) { this->x = x; this->y = y; } 此处x和y隐藏了成员变量,但您可以使用此->

所以这个问题可能是重复的,但当我搜索时,我什么也没找到。所以在C++中如果我有< /P>
class Foo{
    public:
        int x;
        int y;
        Foo(int x, int y);
};

有没有办法用这个做作业?因此,您不必更改传入变量的名称?

是的,有:

Foo(int x, int y) {
    this->x = x;
    this->y = y;
}
此处x和y隐藏了成员变量,但您可以使用此->x和此->y访问它们。

是的,有:

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

这里x和y隐藏了成员变量,但是您可以使用这个->x和这个->y来访问它们。

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

Foo(int x, int y) : x(x), y(y) {}
当然,如果出于任何原因希望访问构造函数主体中的隐藏数据成员,可以使用this指针:


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

Foo(int x, int y) : x(x), y(y) {}
当然,如果出于任何原因希望访问构造函数主体中的隐藏数据成员,可以使用this指针:


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

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

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

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

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

使用{x}和x有什么区别?空的{}在结尾表示什么?结尾{}是函数体空的。{}和for initialization之间的区别可以在另外一个问题中找到,我使用的是一个单独的头文件,它包含了我所有的函数原型以及.cpp文件。从你们的例子来看,我会做Fooint x,int y。。。在标题中,是否正确?然后我需要在.cpp文件中执行任何操作吗?您可以在头文件或cpp文件中实现构造函数。两者都很好。但是对于一个非常小的构造函数,你可以把它放在头中。使用{x}和x有什么区别?空的{}在结尾表示什么?结尾{}是函数体空的。{}和for initialization之间的区别可以在另外一个问题中找到,我使用的是一个单独的头文件,它包含了我所有的函数原型以及.cpp文件。从你们的例子来看,我会做Fooint x,int y。。。在标题中,是否正确?然后我需要在.cpp文件中执行任何操作吗?您可以在头文件或cpp文件中实现构造函数。两者都很好。但是对于一个非常小的构造函数,您可以将它放在头中。