0
メンバーの過負荷またはメンバーの過負荷を使用する必要がありますか?どのようなものを使うべきかはどのようにしてわかりますか?いつメンバー以外の演算子のオーバーロードを使用する必要がありますか?
メンバーの過負荷またはメンバーの過負荷を使用する必要がありますか?どのようなものを使うべきかはどのようにしてわかりますか?いつメンバー以外の演算子のオーバーロードを使用する必要がありますか?
あなたがoperator<
かswap
ような何かを考えているならば(それはひどく厳しいか必須ではありませんが)、親指のルールがあります:
機能は、あなたのクラスのパブリックインターフェイスへのアクセスを必要とする場合は、作りますそれは自由な非メンバ関数です。それ以外の場合は、それをメンバー関数にします。 (代替として、friend
の空き関数が考えられます)
演算子のオーバーロードの場合、オペランドの少なくとも1つがユーザー定義型である必要があります。
フリー関数の設計上の利点は、適用可能なクラスごとに演算子のバージョンを実装する場合は、M * N
ではなく、テンプレートを作成してM + N
の複雑さを得ることができることです。これは、あなたの状況に関連する場合とそうでない場合があります。
Nawaz's very fine answerも参照してください。
お返事ありがとう、非常に役に立ちます – flumpb