2

コンプc; ... 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 << dC/C++ によって に解析されます(((a << b) << c) << d)。これは、

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

それぞれの「結果」は<<次の LHS<<です。したがって、この連鎖を機能させるにostreamは、 each から を返す必要がありますoperator<<

于 2013-10-18T05:56:44.140 に答える