私はC++FAQを読んでいました。そこで、演算子のオーバーロードの使用に関するガイドラインのポイントを見つけました。
建設的な演算子を提供する場合は、左側のオペランドの昇格を許可する必要があります(少なくとも、クラスに明示的なキーワードでマークされていない単一パラメーターのctorがある場合)。たとえば、クラスFractionがintからFractionへの昇格をサポートしている場合(非明示的なctor Fraction :: Fraction(int)を介して)、2つのFractionオブジェクトに対してx --yを許可する場合は、42--yも許可する必要があります。実際には、これは単に、operator-()がFractionのメンバー関数であってはならないことを意味します。通常、それを一般に公開する以外の理由がない場合は、それを友達にします。クラスの一部ですが、友達でなくても、メンバーであってはなりません。
なぜ作者はoperator-()をメンバー関数にすべきではないと書いたのですか?
メンバー関数としてoperator-()を作成した場合の悪い結果と、その他の結果は何ですか?