【发布时间】:2015-01-07 23:06:36
【问题描述】:
我有一堂课:
class MyClass{
double a;
double b;
double c;
double d;
public:
MyClass(double _a, double _b, double _c, double _d){
a = _a;
b = _b;
c = _c;
d = _d;
}
MyClass operator+=(const MyClass & rhs){
a += rhs.a;
b += rhs.b;
c += rhs.c;
d += rhs.d;
return this;
}
MyClass operator+(MyClass & rhs){
MyClass newOne(a+rhs.a,b+rhs.b,c+rhs.c,d+rhs.d);
return newOne;
}
}
我是这样使用它的:
MyClass my1(1., 2., 3., 4.);
MyClass my2(2., 3., 4., 5.);
MyClass my3(2., 4., 6., 8.);
my2 += my3;
my1 += my2;
这个可以工作,但是当我像这样使用它时
my1 += my2 += my3;
我得到不同的答案。 我怎样才能把括号中的表达式算作第一个?例如:
(my1 + my2) + my3 == my1 + (my2 + my3)
【问题讨论】:
-
MyClass operator+=(const MyClass & rhs){应该是MyClass & operator+=(const MyClass & rhs){。return this;应该是return *this; -
return this;不会编译。 -
i get wrong answer -
你得到什么结果? Op += 应该是 RL 关联的。
-
根据您的建议进行更改有帮助,非常感谢。但是我该如何解决第二个问题?我应该重载 () 吗?