我猜这与优先权有关,但为什么这是合法的
vector<string>::iterator iter = vec.begin();
iter++->empty();
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.
vector<string>::iterator iter = vec.begin();
++iter->empty();
Run Code Online (Sandbox Code Playgroud)
有人可以尝试解释这里发生的事件链.
箭头运算符的优先级高于增量,因此++iter->empty()解析为++(iter->empty()),而不是(++iter)->empty().后增量版本有效,因为只有一种方法可以解析iter++->empty().