11

次のコードを検討してください。

#include <iostream>

struct Foo
{
  Foo() : bar( 0 ) {}

  int bar;
};


int main()
{
  Foo foo;

  ++(foo.bar);

  std::cout<< foo.bar << std::endl;

  system("pause");
  return 0;
};

なぜfoo.bar1 に評価されるのですか?

の括弧は(foo.bar)名前のない (右辺値) 式を作成し、それがインクリメントされませんか?

4

2 に答える 2

9

標準では、3.4.2 パラ 6 で明示的に次のように述べられているためです。

括弧で囲まれた式は、囲まれた式と同じ型と値を持つ一次式です。括弧の存在は、式が左辺値であるかどうかには影響しません。

強調鉱山。

于 2012-10-31T08:42:46.370 に答える
1

いいえ、括弧には操作の順序を変更する以外に意味はありません。

右辺値を作成するには、特別な関数を使用する必要がありますstd::move(x)

于 2012-10-31T08:43:13.590 に答える