我是C ++的新手。所以,请耐心等待。我正在研究std::vector
类的实现。我找到了begin()
方法的以下两种不同的实现方式。我知道第一个返回一个RW迭代器,第二个返回一个只读迭代器。我认为仅仅返回类型的差异不足以进行函数重载。这怎么工作呢?
iterator
begin()
{ return iterator(this->_M_impl._M_start); }
const_iterator
begin() const
{ return const_iterator(this->_M_impl._M_start); }
答案 0 :(得分:2)
一个是const
而另一个不是const
。将为const std::vector
个对象调用std::vector
版本,而为非const const
对象调用另一个版本。另请注意,这也适用于const
和非const引用和指针。
有关{{1}}方法和重载的更多信息:
也相关:
答案 1 :(得分:0)
隐含的"这个"参数在第二种方法中是const。这足以在重载时区分它们。