当我使用this->
运算符时,它会在比较函数中保存具有更高实数值的复数的值,但它也会覆盖实变量的值。我无法评估c2.real
的价值。
#include <iostream>
using namespace std;
class Complex
{
int real,img;
public:
void get()
{
cin>>real>>img;
}
void display()
{
cout<<real<<"+"<<img<<"i"<<endl;
}
Complex &compare(Complex&);
Complex &add(Complex&);
};
int main()
{
Complex c1,c2,c3;
c1.get();
c2.get();
c3=c1.compare(c2);
c3.display();
c3=c1.add(c2);
c3.display();
return 0;
}
例如,对于输入2+4i
和7+9i
,此函数会比较检查具有高幅度的实际值,并将{7}和real
变量中的值7和9保存。< / p>
img
但现在当我使用添加功能时,它会给出14 + 18i的总和,即7 + 8i + 7 + 8i
为什么对象 Complex& Complex::compare(Complex &a)
{
if(real>a.real)
{
this->real=real;
this->img=img;
}
else
{
this->real=a.real;
this->img=a.img;
}
return *this;
}
和c2.real
的值被覆盖了,我该怎么办才能得到2 + 4i和7 + 8i的总和。
这也是一个黑客等级问题,所以主要功能和类块被锁定,无法编辑我只能编辑比较和添加功能定义。
c2.img