C ++"this"运算符重载中的关键字,不使用"this"关键字工作相同



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这样的表达式不会像您现有的那样编译。

相关内容

最新更新