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