为什么 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
(按照你的建议,你有两个地方要改。
我阅读了 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
(按照你的建议,你有两个地方要改。