2017年11月11日
《その118》 単項演算子の多重定義
単項演算子の多重定義
次のプログラムで、
operator++(), operator-(const C& x) は、それぞれ、
・C型用の前置増分++演算子関数(単項演算子, メンバ関数)、
・C型用の −演算子関数(単項演算子, 非メンバ関数)、
です。
単項演算子関数(メンバ関数では引数 0個)
返却値型 operator演算子()
単項演算子関数(非メンバ関数では引数 1個)
返却値型 operator演算子(a)
------------------------------------------------------------
#include <iostream>
class C {
int a_;
int b_;
public:
C(int a, int b)
: a_(a), b_(b) { }
int a() const { return a_; }
int b() const { return b_; }
C& operator++() {
++a_; ++b_;
return *this;
}
friend C operator- (const C& x);
};
C operator-(const C& x) {
C temp(-x.a_, -x.b_);
return temp;
}
int main() {
C s(10, 20);
++s;
C t = -s;
std::cout << t.a() << " " << t.b() << '\n';
}
------------------------------------------------------------
C型クラスオブジェクト s は、
・増分++演算子によって、a_ = 11, b_ = 21 に、
・さらに、−演算子によって、a_ = −11, b_ = −21 に
なります。
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6957530
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック