Cplusplus-unary-operators-overloading

提供:Dev Guides
移動先:案内検索

C ++での単項演算子のオーバーロード

単項演算子は単一のオペランドで動作し、以下は単項演算子の例です-

  • リンク:/cplusplus/increment_decrement_operators_overloading [インクリメント(++)およびデクリメント(-)演算子]。
  • 単項マイナス(-)演算子。
  • 論理否定(!)演算子。

単項演算子は、呼び出されたオブジェクトを操作します。通常、この演算子は!obj、-obj、 objのようにオブジェクトの左側に表示されますが、obj のように後置として使用されることもありますまたはobj--。

次の例では、プレフィックス(postfix)の使用法に対してマイナス(-)演算子をオーバーロードする方法を説明します。

#include <iostream>
using namespace std;

class Distance {
   private:
      int feet;            //0 to infinite
      int inches;          //0 to 12

   public:
     //required constructors
      Distance() {
         feet = 0;
         inches = 0;
      }
      Distance(int f, int i) {
         feet = f;
         inches = i;
      }

     //method to display distance
      void displayDistance() {
         cout << "F: " << feet << " I:" << inches <<endl;
      }

     //overloaded minus (-) operator
      Distance operator- () {
         feet = -feet;
         inches = -inches;
         return Distance(feet, inches);
      }
};

int main() {
   Distance D1(11, 10), D2(-5, 11);

   -D1;                    //apply negation
   D1.displayDistance();   //display D1

   -D2;                    //apply negation
   D2.displayDistance();   //display D2

   return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

F: -11 I:-10
F: 5 I:-11

上記の例で概念が明確になり、同様の概念を論理否定演算子(!)のオーバーロードに適用できることを願っています。