使用此方法存储和添加值时遇到问题> c ++中的运算符

时间:2018-01-26 16:15:15

标签: c++ pointers this operator-keyword

当我使用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+4i7+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

0 个答案:

没有答案
相关问题