1

私は C++ 言語の NS2 を使用しています。理解できない次のコードが表示されます!!!!

ch->size() += IP_HDR_LEN;

ご協力いただきありがとうございます...

4

1 に答える 1

7

このメソッドは、式で使用される何かへの参照(左辺値) をch->size()返します。

例えば:

class A{
 int x;
 public:
  int& getX(){ return x;}
};

それは次のように使用できます

A* a= new A;
a->getX() +=5; // which is equivalent to x+=5 or x=x+5, since getX returns reference to 'x', it can be used as LHS of an expression

だからあなたの質問のために:

関数が C++ の左オペランドとして使用される場合の意味

ここでは、関数ではなく、戻り値が左オペランドとして使用されます。戻り値の型は、lvalueを表すsomethingへの参照であり、LHS として使用できます。

編集

@dlf で指摘されているように、size()オーバーロードする任意のクラスのオブジェクトを (参照または値によって) 返すことができますoperator +=参照で返された場合は、上記の例と同じです (ただにint xなるMyClass xint& getX()なるMyClass& getX())。value で返された場合、可能ですが、役に立たないか、悪い設計につながります ( MyClasssoperator +=が何らかのグローバル状態を変更した場合)。

于 2014-05-29T12:46:39.067 に答える