JSF.CLASS.DEFINE.OPPOSITE_OPERATOR

2 つの演算子が相反する場合 (== と != など)、両方とも定義し、一方を他方の観点から定義する必要があります。

理論的根拠

operator==() が指定される場合、operator!=() も指定されるのが自然です。一方を他方の観点から定義するとメンテナンスが簡単でもあります。

例 1

コピー
  bool operator==(Sometype a)
  {
      if ( (a.attribute_1 == attribute_1) &&
              (a.attribute_2 == attribute_2) &&
              (a.attribute_3 == attribute_3) &&
              ...
              (a.attribute_n == attribute_n) )
      {
          return true;
     }
     else
     {
         return false;
     }
     bool operator!=(Some_type a)
     {
         return !(*this==a); //Note "!=" is defined in terms of "=="
     }

この例は、operator!=() を operator==() の観点で定義する方法を示しています。この構造はメンテナンスが容易です。