1

私はC++の初心者です。だから、我慢してください。std::vector私はクラスの実装を調べていました。メソッドの次の2つの異なる実装が見つかりましたbegin()。最初のものは RW イテレータを返し、2 番目のものは読み取り専用イテレータを返すことを理解しています。関数のオーバーロードは戻り値の型が違うだけでは足りないと思いました。これはどのように機能しますか?

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

1つはconstあり、もう1つはそうではありません。constバージョンはオブジェクトに対して呼び出され、const std::vectorもう一方は非 conststd::vectorオブジェクトに対して呼び出されます。constまた、これはconst 以外の参照とポインターにも適用されることに注意してください。

constメソッドとオーバーロードの詳細:

また関連:

于 2013-03-16T09:55:14.860 に答える
0

暗黙の「this」パラメーターは、2 番目のメソッドでは const です。これは、オーバーロードでそれらを区別するのに十分です。

于 2013-03-16T09:55:07.560 に答える