请参阅结尾处的编辑
我试图重载C++中的+运算符,以允许我添加两个复数。 (添加实数并添加虚数)。
这是我的重载函数:
ComplexNum operator+(ComplexNum x, ComplexNum y){
ComplexNum result;
result.real = (x.getReal() + y.getReal());
result.imag = (x.getImag() + y.getImag());
return result;
}
我的Complex Number构造函数接受两个int,并将第一个分配给int real,第二个分配给int imag。
当我尝试添加它们时:
ComplexNum num1 = ComplexNum(1,1);
ComplexNum num2 = ComplexNum(2,3);
ComplexNum num3;
num3 = num1 + num2;
printf("%d",num3.getReal());
结果是0。结果应为3(已添加num1和num2的实数部分)
编辑:我知道出了什么问题。我有.getReal()和.getImage()返回两倍。
最佳答案
由于operator +的参数声明为值,而不是引用,因此它们将通过副本传递,因此,如果ComplexNum的副本构造函数不起作用,则可能导致x和y的实部为0。
加法也可能起作用,但是当您调用num3的赋值运算符时,您会丢失真实的部分。
或者,可能只是打破了getReal()方法。
关于c++ - C++中的重载运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1288669/