C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++で単項演算子をオーバーロードしますか?


operatorキーワードは、クラスのインスタンスに適用されたときにoperator-symbolが何を意味するかを指定する関数を宣言します。これにより、演算子に複数の意味が与えられるか、「オーバーロード」されます。コンパイラーは、オペランドのタイプを調べることにより、演算子のさまざまな意味を区別します。

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

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

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

次の例では、プレフィックスを使用するためにbang(!)演算子をオーバーロードする方法を説明しています-

#include <iostream>
using namespace std;

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

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

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

   // overloaded bang(!) operator
   Distance operator!() {
      feet = -feet;
      inches = -inches;
      return Distance(feet, inches);
   }
};
int main() {
   Distance D1(3, 4), D2(-1, 10);

   !D1;
   D1.display();   // display D1

   !D2;            // apply negation
   D2.display();   // display D2

   return 0;
}

出力

これにより、出力が得られます-

F: -3 I:-4
F: 1 I:-10

  1. C++の単項演算子

    単項演算子は、単一のオペランドに作用して新しい値を生成する演算子です。単項演算子は次のとおりです- 間接演算子(* )-ポインタ変数を操作し、ポインタアドレスの値と同等のl値を返します。これは、ポインタの「間接参照」と呼ばれます。 演算子のアドレス(&) -単項アドレス演算子(&)は、そのオペランドのアドレスを取ります。 address-of演算子のオペランドは、関数指定子またはビットフィールドではなく、レジスタストレージクラス指定子で宣言されていないオブジェクトを指定するl値のいずれかです。 単項プラス演算子(+) -単項プラス演算子(+)の結果は、そのオペランドの値です。単項プラ

  2. C++の単項演算子

    単項演算子は、単一のオペランドに作用して新しい値を生成する演算子です。単項演算子は次のとおりです。 演算子 説明 間接演算子(*) ポインタ変数を操作し、ポインタアドレスの値と同等のl値を返します。これは、ポインタの「逆参照」と呼ばれます。 演算子のアドレス(&) 単項アドレス演算子(&)は、そのオペランドのアドレスを取ります。アドレスオブ演算子のオペランドは、関数指定子またはビットフィールドではなくレジスタストレージクラス指定子で宣言されていないオブジェクトを指定するl値のいずれかです。 単項プラス演算子(+) 単項プラス演算子(+)の結果は