正确使用这个 - >

Sim*_*Sim 4 c++ java this

this一个班级的自我引用的正确用法是什么?

我有时在一个方法中使用它来清除所使用的变量是一个成员变量而不是在方法中声明的变量,但另一方面我想知道这是否是一个很好的理由,因为我认为你应该总是代码(和注释)以一种自我解释的方式,因此会不必要地使用this不必要的和另一个原因来反对它,那就是你实际上生成了比需要更多的代码.

void function() {
  while(i != this->length) //length is member var
     /*do something*/
}
Run Code Online (Sandbox Code Playgroud)

我经常遇到的另一种使用它的方法是内部构造函数(主要是Java),因为参数确实与必须初始化的成员变量具有相同的名称.由于Primer声明这是坏代码,我不这样做,但另一方面,我看到使用与member-vars相同的名称作为参数名称清除了它们的用途.

C++
Constructor::Constructor(int size,int value) : this->size(size),
                                               this->value(value) {};

Java
Constructor(int size,int value) {
  this->size = size;
  this->value = value;
}
Run Code Online (Sandbox Code Playgroud)

我希望实际上有一个规则考虑两种语言(Java/c ++),如果不是我会重新考虑c ++,因为这是我更感兴趣的.

Jam*_*nze 10

在大多数情况下,this->是多余的.例外情况是,如果你有一个同名的参数或局部变量(很容易,也可能是最好的避免),或者在模板中,为了强制使用后面的符号 - 在后一种用法中,它通常是不可避免的.