C++Effective_C++读书笔记C++进阶阶段

Effective C++_读书笔记_106

2018-12-20  本文已影响1人  FlyingPig_

继承与面向对象设计

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 函数具体指定接口继承以及强制性实现继承.

条款35

考虑 virtual 函数以外的其他选择

条款36

条款37

条款38

条款39

上一篇 下一篇

猜你喜欢

热点阅读