2

补偿;... cout<< c;

重载的 operator<< 函数返回一个引用。在这种情况下,它在哪里退回或由谁收集。返回引用的目的是什么?

class comp
    {
      int re,im;

      public: comp(){re=0;im=0;}
            comp(int a,int b){re=a;im=b;}
            void show(){cout<<"\n"<<im<<"+i"<<re<<"\n\n";}
            comp operator *(comp a)
            {
              comp temp;
              temp.re=(re+a.re) - (im*a.im);
              temp.im=(im*a.re) + (re*a.im);
              return temp;
            }
      friend ostream & operator<<(ostream& dout,complex & )

    };
    ostream& operator << (ostream &dout, comp &a)
     {
       dout<< a.re;
       dout<< "+i";
       dout<<a.im;
       return dout;
     }

    int main()
    {
     comp a(1,2),b(2,3),c;
     c=a*b;
     c.show();
     cout<< c;
     return 0;
    }
4

1 回答 1

5

一连串的<<运算符,如a << b << c << d,被 C/C++ 解析为(((a << b) << c) << d),与

a.operator<<(b).operator<<(c).operator<<(d)

每个的“结果”是下一个<<的 LHS <<;因此,要使这个链接工作,ostream必须从 each 返回operator<<

于 2013-10-18T05:56:44.140 回答