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

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

但这不是。
vector<string>::iterator iter = vec.begin();
++iter->empty();

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

最佳答案

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

关于c++ - 前缀增量运算符错误 C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35328874/

10-13 08:02
查看更多