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

広告

posted by fanblog

2017年11月03日

《その104》 演算子関数の定義例


 データメンバが整数値一つだけの、下記のクラス TinyInt(新版明解C++入門編 p.457)に注釈を加えて自分なりに復習してみました。


// TinyInt.h
------------------------------------------------
#include <climits>
#include <iostream>

class TinyInt {
int v; // テータメンバは整数値一つのみ。

public:
// コンストラクタ(int型から TinyInt型への変換コンストラクタ兼用)
TinyInt(int value = 0) : v(value) { }

// intへの変換関数
// (ユーザ定義変換 … この変換関数 と 上の変換コンストラクタ の総称)
operator int() const { return v; }

// 論理否定演算子! (v == 0 なら true, v != 0 なら false)
bool operator!() const { return v == 0; }

// 前置増分演算子++
// インクリメント後の自分自身への参照 TinyInt& を返却するので、
// 返却値に対して この演算子 ++ を連続使用することができる。
// 例:TinyInt t;
// ++(++t); // t は 2 になる。

TinyInt& operator++() {
if (v < INT_MAX) v++;
return *this;
}

// 後置増分演算子++
// 前置増分演算子++ と同様にインクリメントするが、返却するのは
// インクリメント前の自分自身の値

TinyInt operator++(int) {
TinyInt x = *this;
if (v < INT_MAX) v++;
return x;
}

// 2項+演算子(クラス内で定義したフレンド関数)
// 仮引数の型は const TinyInt&
// 演算結果である TinyInt型一時オブジェクトの値を返却する。

friend TinyInt operator+(const TinyInt& x, const TinyInt& y) {
return TinyInt(x.v + y.v);
}

// 複号代入+=演算子
// 自分自身への参照 TinyInt& を返却するので、
// 返却値に対して この演算子 += を連続使用することができる。
// 例:TinyInt t;
// (t += 5) += 10; // t は 15 になる。

TinyInt& operator+=(const TinyInt& x) { v += x.v; return *this; }

friend std::ostream& operator<<(std::ostream& s, const TinyInt& x) {
return s << x.v;
}
};
------------------------------------------------


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

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









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

お名前:

メールアドレス:


ホームページアドレス:

コメント:

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

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

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

 たまに、クリック お願いします 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日以上新しい記事の更新がないブログに表示されております。