所以这个问题可能是重复的,但是当我搜索时我找不到任何东西。所以在C ++中,如果我有
class Foo{
public:
int x;
int y;
Foo(int x, int y);
};
和
Foo(int xIn, int yIn){
x = xIn;
y = yIn;
}
是不是可以使用this
进行作业?所以你不必更改传入的变量的名称?
答案 0 :(得分:6)
是的,有:
Foo(int x, int y) {
this->x = x;
this->y = y;
}
此处x
和y
隐藏了成员变量,但您可以使用this->x
和this->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;
}