3-3-1. 単項演算子のオーバーロード
公開日: 20:49 3. オブジェクト指向編/3-3. オーバーロード/3-3-1. 単項演算子のオーバーロード
単項演算子は単一の被演算子を操作し、次のようなものがあります。
- インクリメント(++)とデクリメント(--)演算子
- 単項マイナス演算子(-)
- 論理否定演算子(!)
単項演算子は呼びだされた時オブジェクトを操作し、通常この演算子は!obj、-obj、++objのようにオブジェクトの左に記述されますが、obj++やobj--のように接尾辞として使われることもあります。
次の例はマイナス演算子(-)がどのようにして接尾辞と同様に、接頭辞としてオーバーロードされるかを示すものです。
#include <iostream> using namespace std; class Distance { private: int feet; // 0 から 無限 int inches; // 0 から 12 public: // 必要なコンストラクタ Distance(){ feet = 0; inches = 0; } Distance(int f, int i){ feet = f; inches = i; } // 出力関数 void displayDistance() { cout << "F: " << feet << " I:" << inches <<endl; } // -演算子のオーバーロード Distance operator- () { feet = -feet; inches = -inches; return Distance(feet, inches); } }; int main() { Distance D1(11, 10), D2(-5, 11); -D1; // マイナスを適用 D1.displayDistance(); // D1を出力 -D2; // マイナスを適用 D2.displayDistance(); // D2 return 0; }上のコードをコンパイルし実行すると、次の結果が得られます。
F: -11 I:-10
F: 5 I:-11
似たコンセプトを論理否定演算子(!)に適用することができます。
0 件のコメント :
コメントを投稿