关于 C++ STL list 之迭代器

//list迭代器基类[部分代码]struct_List_iterator_base{_List_node_base*_M_node;booloperator==(con... //list 迭代器基类[部分代码]
struct _List_iterator_base {
_List_node_base* _M_node;
bool operator==(const _List_iterator_base& __x) const {
return _M_node == __x._M_node;
}
bool operator!=(const _List_iterator_base& __x) const {
return _M_node != __x._M_node;
}
};

////list 迭代器类[部分代码]
template<class _Tp, class _Ref, class _Ptr>
struct _List_iterator : public _List_iterator_base {
reference operator*() const { return ((_Node*) _M_node)->_M_data; }
pointer operator->() const { return &(operator*()); }

_Self& operator++() {
this->_M_incr();
return *this;
}
_Self operator++(int) {
_Self __tmp = *this;
this->_M_incr();
return __tmp;
}
_Self& operator--() {
this->_M_decr();
return *this;
}
_Self operator--(int) {
_Self __tmp = *this;
this->_M_decr();
return __tmp;
}
};

问:
为什么 比较操作符 == != 重载 的实现 放在 基类 _List_iterator_base
而不是和 -> * ++ -- 一样 放在 _List_iterator 当中

这是出于什么考虑?
谢谢!!!
展开
 我来答
刚柔柔孰刚2616
2016-11-18 · TA获得超过159个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:61.6万
展开全部
struct _List_iterator_base {
  _List_node_base* _M_node;
  bool operator==(const _List_iterator_base& __x) const {
    return _M_node == __x._M_node;
  }
  bool operator!=(const _List_iterator_base& __x) const {
    return _M_node != __x._M_node;
  }
};  

////list 迭代器类[部分代码]
template<class _Tp, class _Ref, class _Ptr>
struct _List_iterator : public _List_iterator_base {
  reference operator*() const { return ((_Node*) _M_node)->_M_data; }
  pointer operator->() const { return &(operator*()); }

  _Self& operator++() { 
    this->_M_incr();
    return *this;
  }
  _Self operator++(int) { 
    _Self __tmp = *this;
    this->_M_incr();
    return __tmp;
  }
  _Self& operator--() { 
    this->_M_decr();
    return *this;
  }
  _Self operator--(int) { 
    _Self __tmp = *this;
    this->_M_decr();
    return __tmp;
  }
};
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式