C++;向量中的常量迭代器 我是一个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); }

C++;向量中的常量迭代器 我是一个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); },c++,overloading,C++,Overloading,隐式“this”参数在第二种方法中是常量。这足以在重载时区分它们。一个是const,另一个不是。const版本将为const std::vector对象调用,而另一个版本则为非conststd::vector对象调用。还要注意,这也适用于常量和非常量引用和指针 有关const方法和重载的详细信息: 同样相关的还有: 一个是常量,另一个不是常量。这就足够重载了。这是标准库。您可以只参考std::vector。更改为std:;矢量

隐式“this”参数在第二种方法中是常量。这足以在重载时区分它们。

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

有关
const
方法和重载的详细信息:

同样相关的还有:


一个是常量,另一个不是常量。这就足够重载了。这是标准库。您可以只参考
std::vector
。更改为std:;矢量