为什么 operator-> 在 C++ STL 库中由 operator* 实现?

why is operator-> implemented by operator* in C++ STL library?

我阅读了 std::deque 源代码,我发现了 _deque_iterator::operator->_deque_iterator::operator*

的以下实现
reference operator* const() { return *cur; }
pointer operator-> const(){ return &(operator*()); }

所以我的问题是为什么不只是 return cur 指针?像这样:

pointer operator-> const(){ return cur; }

更灵活。

如果有什么改变,你只需要在一个地方做改变。如果你returncur(按照你的建议,你有两个地方要改。