res.var= this->var+obj.var;
res.var = var + obj.var;
两者工作原理相同,那么使用this关键字有什么好处这是我的代码
#include <bits/stdc++.h>
using namespace std;
class MyClass {
public:
int var, v;
MyClass() {}
MyClass(int a, int b)
: var(a), v(b) { }
MyClass operator+(MyClass &obj) {
MyClass res;
res.var = this->var + obj.var;
res.v = v + obj.v;
return res;
}
};
int main(){
MyClass ob(12, 12);
MyClass ob1(55, 56);
MyClass res = ob + ob1;
cout << res.var << " " << res.v;
}
有人能给我解释一下这个关键字在操作员过载中的好处吗
为了清楚起见:它对生成的程序绝对没有影响。
有些人更喜欢(*this).
,以获得更好的对称性。
有时您确实需要使用this
来消除局部变量甚至另一个标记的歧义;后者可能发生在使用模板时,并且某些编译器没有正确遵循规则。
请注意,您应该传递const MyClass& obj
,否则匿名临时库无法绑定到您的重载函数:像ob1 + ob2 + ob3
这样的表达式不会像您现有的那样编译。