私は C++ 言語の NS2 を使用しています。理解できない次のコードが表示されます!!!!
ch->size() += IP_HDR_LEN;
ご協力いただきありがとうございます...
このメソッドは、式で使用される何かへの参照(左辺値) を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 x
、int& getX()
なるMyClass& getX()
)。value で返された場合、可能ですが、役に立たないか、悪い設計につながります ( MyClass
soperator +=
が何らかのグローバル状態を変更した場合)。