修飾子 (一般に「const オブジェクト」と呼ばれます)で定義されているか、または const へのポインターまたは const への参照を介して参照されている二重リンク リスト オブジェクトがあるconst場合、読み取りを有効にしたいが、書き込み。-const修飾された演算子がそれを行います。
修飾子なしで定義されたオブジェクトconst、または非 const へのポインターまたは非 const への参照を介して参照されるオブジェクトがある場合、読み取りと書き込みの両方を有効にする必要があります。非const修飾演算子がそれを行います。
したがって、わざわざ 2 つのオーバーロードを作成する理由は、両方の動作を実装するためです。
constness に関係なく読み取りのみが必要な場合は、constバージョンのみを記述します。これは、修飾constされたメンバー関数を使用して両方のケースとやり取りできるのに対し、const修飾されていないメンバー関数は、修飾されていconstないオブジェクト (または、非 const へのポインターまたは非 const への参照を介して)。
非オブジェクトにのみoperator[]適用したい場合は、非修飾バージョンのみを記述します。オブジェクトを変更可能にする必要があるとは思わないため、これは奇妙に思えるかもしれませんが、実際には、これはまさに で行われることです。constconstoperator[]std::mapoperator[]