3

我猜这与优先级有关,但为什么这是合法的

vector<string>::iterator iter = vec.begin();
iter++->empty();

但这不是。

vector<string>::iterator iter = vec.begin();
++iter->empty();

有人可以尝试解释这里发生的事件链。

4

1 回答 1

7

箭头运算符的优先级高于增量,因此++iter->empty()被解析为++(iter->empty()),而不是(++iter)->empty()。后增量版本有效,因为只有一种解析iter++->empty().

于 2016-02-11T00:50:24.027 回答