我的问题是,为什么this-> var将自动选择12,而obj.var仅选择55?为什么this-> var不是55?是因为它所处的位置吗?(我的意思是this-> var + obj.var,其中this->放在“ +”符号的前面),如果我更改代码,例如:res.var = obj .var-this-> var; ,似乎this-> var仍为12。因此,似乎是鳕鱼obj1 + obj2,如果obj2在“ +”号之后,则它是抛出给&obj的那个,是正确的推断?谢谢!
#include <iostream>
using namespace std;
class MyClass {
public:
int var;
MyClass() { }
MyClass(int a)
: var(a) { }
MyClass operator+(MyClass &obj) {//here's my problem
MyClass res;
res.var= this->var+obj.var;//here's my problem
return res;
}
};
int main() {
MyClass obj1(12), obj2(55);
MyClass res = obj1+obj2;//here's mt problem
cout << res.var;
}
答案 0 :(得分:0)
在c ++上,所有运算符都有关联规则。 加法,乘法,移位,逻辑等运算符在左右关联。 一元赋值运算符从右到左是关联的。 因此,每当您使用左关联运算符时,编译器都会像代码一样从左至右读取它。