关于添加的运算符重载的C ++问题

时间:2017-10-03 22:54:06

标签: c++ operator-overloading

这是我的主要功能:

 int main(){
     Complex c1(1.0, 5.0);
     Complex c2(3.0,-2.0);
     Complex c3(1.0, 2.0);
     cout << "c1 + c2 + c3 = "
         << c1 + c2 + c3 << endl;
     return 0;
 } 

这是我用来添加所需数字的功能

Complex& operator+(const Complex & x, const Complex & y){
    Complex c;
    c.a = x.a + y.a;
    c.b = x.b + y.b;

    return c;

}

ab是我班级中的私有双变量。

在运行我的程序时,我似乎得到输出为1 + 2i即(c3),当我只添加2个对象时,它似乎只能正常工作。有什么方法可以调整我现有的代码,使其能够用于最多n个术语吗?

1 个答案:

答案 0 :(得分:3)

您的operator +会返回对本地变量c的引用,该变量在完成后会被销毁。对结果的任何进一步使用都会导致未定义的行为。 您需要返回,以便复制(或rvalue),而不是引用

Complex operator+(const Complex & x, const Complex & y) {...}