C++のconst&T operator=について考える
782 ワード
通常のassignmentオペレータの宣言はこうです.
この2つのconstはどのように理解すべきですか?後のconstはよく理解していますが、参照オブジェクトとして元のオブジェクトを破壊しないようにします.
では、後ろの1つは?
実際、assignment操作では
たとえば
すなわち、aが取得したのはoperator=を呼び出す戻り値ではなく、メンバー関数によってoperator=を呼び出すことによって直接a操作が実現される.
では、この戻り値の意味は何ですか?
実際、この戻り値は次のような状況のために用意されています.
この場合、割り当てオペレータは右に結合され、実際の操作は
operator=の戻り値は、連続した付与時に左の値として使用するためであり、constを宣言して保護する必要があるため、自然に自分の値が変更されることを防止する必要がある.
以上は個人的な理解ですが、問題があれば、指摘を歓迎します.
const elmentType & elmentType::operator=(const elmentType &rhs)
この2つのconstはどのように理解すべきですか?後のconstはよく理解していますが、参照オブジェクトとして元のオブジェクトを破壊しないようにします.
では、後ろの1つは?
実際、assignment操作では
たとえば
a = b;
すなわち、aが取得したのはoperator=を呼び出す戻り値ではなく、メンバー関数によってoperator=を呼び出すことによって直接a操作が実現される.
では、この戻り値の意味は何ですか?
実際、この戻り値は次のような状況のために用意されています.
a = b = c = d;
この場合、割り当てオペレータは右に結合され、実際の操作は
a = (b = (c = d))
operator=の戻り値は、連続した付与時に左の値として使用するためであり、constを宣言して保護する必要があるため、自然に自分の値が変更されることを防止する必要がある.
以上は個人的な理解ですが、問題があれば、指摘を歓迎します.