私は現在、古いC++のコードベースを検討し、次のように起こって多くのコードを参照してください。"operator =="は常にC++の "operator =="で実装する必要がありますか?
はっきりbool SomeClass::operator==(const SomeClass& other) const
{
return member1 == other.member1 && member2 == other.member2;
}
bool SomeClass::operator!=(const SomeClass& other) const
{
return member1 != other.member1 || member2 != other.member2;
}
比較ロジックが複製され、上記のコードは、おそらく2つの場所ではなく、1に変更する必要があります。論理変化はそれだけoperator==
を呼び出して否定を実行するので、自動的にoperator!=
に反映されますoperator==
で起こるどんな後者の場合
bool SomeClass::operator!=(const SomeClass& other) const
{
return !(*this == other);
}
:operator!=
を実装する典型的な方法私の知る限り
は次のようです。
operator!=
は、operator==
をC++コードで再利用する以外は、他の方法で実装する必要がありますか?
同様に、少なくとも冗長な方法で '>、> =、<=、<'演算子を実装しようとする必要があります。 –
ルールは絶対であってはなりません。すべてのルールは一般的に成立します。しかし、私は彼らがいない特定のインスタンスが常に存在すると確信しています。しかし、(あなたがそれを昨日やったことがない限り)1人で登場することは一般的には不可能です(ルールの例外であるため)。そのような質問は、すべて白鳥です。はい、すべての白鳥は白です(オーストラリアで白鳥が発見された1500年まで)。覚えておいてください: "terara nigroque simillima cygnoのrara avis" –