2017年10月27日
《その94》 演算子関数( operator++, operator-- の概要 その1 )
演算子関数
※ 演算子関数 operator! を定義すると、クラス型オブジェクトに 論理否定演算子 ! を
適用できるようになります。
※ 演算子関数 operator++ を定義すると、クラス型オブジェクトに 増分演算子 ++ を
適用できるようになります。
※ 演算子関数 operator-- を定義すると、クラス型オブジェクトに 減分演算子 -- を
適用できるようになります。
このうち、今回は演算子関数 operator++, operator-- について、その概要を確認して
おこうと思います。
【 演算子関数 operator++, operator-- 】
クラス C があるものとします。
クラス C に増分演算子 ++ を適用できるようにする演算子関数 operator++ と
クラス C に減分演算子 -- を適用できるようにする演算子関数 operator-- の関数宣言には
次の4種類があります。
C& operator++(); // (※1) 前置増分演算子
C operator++(int); // (※2) 後置増分演算子
C& operator--(); // (※3) 前置減分演算子
C operator--(int); // (※4) 後置減分演算子
後置の場合は、int型の引数を受け取る形式にします。
返却値は、
前置の場合は C&
後置の場合は C
にします。
------------------------------------------
ここで、組込み型に適用した場合の 増分演算子・減分演算子の働きを再確認をしておこう
と思います。
int a = 5;
int b;
b = ++a; // a … 6, b … 6
b = --a; // a … 5, b … 5
b = a++; // a … 6, b … 5
b = a--; // a … 5, b … 6
++a = 5; // a … 5
--a = 5; // a … 5
a++ = 5; // エラー
a-- = 5; // エラー
++a, --a は左辺値式(代入の左辺にも右辺にも置ける式)
a++, a-- は右辺値式(代入の右辺にしか置けない式)
------------------------------------------
上述 (※1) 〜 (※4) の返却値に C&, C の違いがあるのは、
組込み型の場合の増分演算子・減分演算子の働きに仕様を合わせるためです。
演算子関数から返される C は実体を伴っていないので、返された時点で何かで受け取ら
ない限り消失してしまいます。ですから、代入演算子 = の右辺にしか置けません。
一方、C& は参照ですから クラス C そのものです。ですから、代入演算子 = の左辺に置く
ことが可能です。
--
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6901627
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック