看看这个简单的类:
class A {
int *val;
public:
A() { val = new int; *val = 0; }
int get() { return ++(*val); }
};
为什么当我运行这段代码时,它会打印出
21
:int main() {
A a, b = a;
cout << a.get() << b.get();
return 0;
}
但是如果我像这样运行它,它会打印出
12
,这正是我所期望的:int main() {
A a, b = a;
cout << a.get();
cout << b.get();
return 0;
}
我在这里漏掉了什么?运算符优先级?顺便说一下,这是一个C++测试问题,而不是生产代码。
编辑:
这是否意味着当我有 cout << (Expr1) << (Expr2)
时,Expr1
和 Expr2
在输出Expr1
之前就已经被计算了?