Effective C++勉強メモ: Item 19 クラス・デザインは型デザイン
新しいクラスを宣言・定義するのは、C++の型システムの拡張に他ならず、型デザインなので本来簡単なことではない。という項目。
以下のことに気をつけるべき:
- 新しい型のオブジェクトの生成・破棄方法
- 初期化と代入の関係
- Pass-by-valueの意味
- 型の性質上取り得る値の範囲
- 継承関係グラフにおける位置付け
- 型変換の有無と実装
- 適用可能な演算子と関数
- 自動的に作成されるメンバ関数のうち、使うべきでないもの
- メンバデータ・関数に対するアクセス
- 「不文律」なインタフェース(パフォーマンス、例外安全性、リソース管理など)
- 型の普遍性(ジェネリクスの必要性)
- そもそも新しい型が必要なのか?
判断すべきことが多いし煩雑な気もするが、確かにクラスを書くときに暗黙裡にこれらの点について決断しているな・・・
みんなよくC++書いてられるよな・・・