继承与面向对象设计
OOP不是一项用来划分语言特性的仪典, 而是可以让你通过它说出你对软件系统的想法.
永远铭记 80-20 原则.
条款32
确定你的 public 继承塑模出 is-a 关系
public 继承意味着 is-a 关系. 适用于 base class 身上的每一件东西也一定适用于 derived classes 身上, 因为每个 derived class 对象也是一个 base class 对象.
条款33
避免遮掩继承而来的名称
简单来说就是不同作用域的问题.
derived class 内的名称会遮掩 base class 内的名称. 在 public 继承下从来没有人希望如此. (这样违反了条款32).
条款34
区分接口继承和实现继承
纯虚函数也可以有默认实现, 但只能实现接口继承;
接口继承和实现继承不同, 在 public 继承下, derived classes 总是继承 base class 的接口.
pure vitual 函数只具体指定接口继承.
impure virtual 函数具体指定接口继承和缺省实现继承.
non-pure 函数具体指定接口继承以及强制性实现继承.
网友评论