Mar*_*n85 11 c++ rvalue parentheses
请考虑以下代码:
#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;
};
Run Code Online (Sandbox Code Playgroud)
为什么foo.bar评价为1?
括号中是否没有(foo.bar)创建一个未命名的(r值)表达式,然后递增?
因为标准明确规定在3.4.2第6段:
带括号的表达式是一个主表达式,其类型和值与所包含表达式的类型和值相同.括号的存在不会影响表达式是否为左值.
强调我的.