【发布时间】:2020-02-18 18:48:34
【问题描述】:
为了更加熟悉 C++,我正在实现一个类来操作复数。
class Complex {
private:
double _real;
double _imag;
public:
Complex();
Complex(double real, double imag);
Complex(const Complex& z);
Complex operator+(const Complex& u) const;
Complex operator+=(const Complex& u);
};
我已经重载了 + 运算符,它按预期工作:
Complex Complex::operator+(const Complex& u) const {
Complex z(_real + u._real, _imag + u._imag);
return z;
}
u=1-2i
v=2-1i
u+v=3-3i
另外,我还想重载+=:
Complex Complex::operator+=(const Complex& u) {
Complex z(_real + u._real, _imag + u._imag);
return z;
}
然而,这并没有按预期工作,u+=v 的结果是u=1-2i。为什么会这样?
【问题讨论】:
标签: c++ class operator-overloading compound-assignment