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