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