1. ホーム
  2. c++

[解決済み] C++で関数が左オペランドとして使用される場合の意味

2022-02-15 13:09:52

質問

C++言語で書かれたNS2を使っています。 以下のコードを見ましたが、理解できません!!!!

ch->size() += IP_HDR_LEN;

お世話になりました

解決方法は?

方法 ch->size() は以下を返します。 参照 (lvalue)で、式の中で使用されるものです。

例えば

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++で関数が左オペランドとして使用される場合の意味は?

ここで 戻り値 として使用されます。 左オペランド ではなく 機能 . 戻り値の型は 参照 への 何か を表す。 であり、LHSとして使用できる。

編集

@dlfさんのご指摘の通りです。 size() をオーバーロードする任意のクラスのオブジェクトを(参照または値で)返すことができます。 operator += . もし 参照で返される であれば,上の例と同じです(単に int xMyClass x , int& getX() になる MyClass& getX() ). もし 値で返される はできますが、役に立たないか、悪いデザインにつながります(もし MyClass s operator += は、あるグローバルな状態を変更します)。