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 件のコメント :
コメントを投稿