アフィリエイト広告を利用しています

広告

posted by fanblog

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 そのものです。ですから、代入演算子 = の左辺に置く
ことが可能です。


新版 明解C 入門編 (明解シリーズ)

新品価格
¥2,916から
(2017/8/30 21:02時点)









--
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/6901627
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


検索
<< 2018年08月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
プロフィール
こうすけさんの画像
こうすけ

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


×

この広告は30日以上新しい記事の更新がないブログに表示されております。