C++语言程序设计

11.1.4 不合适的继承
继承和派生有一个基本的原则，就是基类对象能够使用的地方，也能用同样的方法使用派生类的对象。
下面是一个破坏了这个原则的实例，BoundedStack时从Stack派生的，Stack类支持基本的栈操作，即压入一个元素到栈中和从栈中弹出一个元素，如例11-8。
在该类中，隐含push成员函数总能压入一个新的元素到栈中。有时，我们可能需要只能压入固定元素个数的栈。为了复用Statck类的实现，从Statck类派生了一个BoundedStack类，如例11-9。
但是，这破坏了上面提到的基本的原则：基类对象能够使用的地方，派生类对象也能够被使用。例如，假定BoundedStack的capacity成员设置为5，即栈中最多只能有5个元素，则压栈次数超过5，则会出错。
之所以从Statck派生BoundedStack，只是为了复用Statck类的代码，其实，我们也可以用组合的方法复用代码，所谓组合是指用一个类的对象作为另一个类的数据成员，如例11-9。
现在我们对这个原则可能还理解不深，在学习了多态的概念后，对这个原则会有更深的理解。