1

我是 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); }
4

2 回答 2

2

一个是const,另一个不是。const将为const std::vector对象调用该版本,而为非常量std::vector对象调用另一个版本。另请注意,这也适用于const非常量引用和指针。

const有关方法和重载的更多信息:

也相关:

于 2013-03-16T09:55:14.860 回答
0

隐含的“this”参数在第二种方法中是 const。这足以在重载中区分它们。

于 2013-03-16T09:55:07.560 回答