オブジェクト指向の重要なルールとして「public継承はis-a関係を意味する」がある。つまり、クラスDerivedがクラスBaseを継承するとき「クラスBaseはクラスDerivedより一般的な概念を表し、クラスDerivedはクラスBaseより特殊化した概念を表す」ということである。このことからクラスBaseが使えるところはクラスDerivedも使えることができるようにする必要がある。つまり、
- 継承した名前を隠蔽しないようにする
- 非仮想関数を派生クラスで再定義しない
- 継承された関数のデフォルト引数を再定義しない
というルールを守る必要がある。
参考文献
Effective C++ 第3版, スコット・メイヤーズ著