学校で、すべての算術演算子をオーバーロードする Matrix クラスを実装する課題がありました。私がしたことは、(たとえば) += をメンバー関数として定義し、+ を += 関数を使用する非メンバー関数として定義することでした (両方とも同じファイル内にありますが、+ クラスの外にあります)。学校のスタッフも似たようなことをしましたが、'+' をフレンド関数として宣言しました (そして += の実装も使用しました)。
両方の実装が完全に機能するため、非メンバー関数では得られないのに、フレンド関数では何が得られるのかを理解しようとしています。それぞれを優先する必要があるのはいつですか?
ありがとう!ヨタム