Accelerated C++第15章
文字絵の例でインタフェースと実装の分離、実装部分のカプセル化について説明している。実装部分のカプセル化については、コンストラクタなどをprivateにすることで隠しているわけだが、その分多くのfriendが必要になってしまってて、正直そこまでのカプセル化が必要なのかが不明。追加・改造などのメンテナンスが大変に思うけど、どうなんでしょうかね。
純粋仮想関数
- 仮想関数の宣言を行った場合、その定義が必要(http://d.hatena.ne.jp/dogatana/20081018/1224296743)だが純粋仮想関数とすることで定義不要となる。
抽象基底クラス
- 純粋仮想関数を含むクラスを抽象基底クラスと呼ぶ。
friendを忘れるな−protectedメンバへのアクセス
- 派生クラスオブジェクトは、自分かその基底クラスのprotectedなメンバにアクセスできるが、派生クラスオブジェクトの一部として存在する基底クラス部分にしかアクセスできない。