1.虚拟继承 --继承了多个基类实例, 但只需要一份单独的共享实例
2.对于一个类的基类的数目, c++没有限制(可以多继承)
   两个基类是最常见的, 一个基类常常用于表示一个共有抽象接口, 第二个基类提供是有的实现
   从第三个或更多个直接基类继承而来的派生类遵循mixin-based设计风格
3.基类构造函数被调用的顺序以派生表中声明的顺序为准
4.在多继承下, 派生类可以从两个或者更多个基类中继承同名的成员 --直接访问是二义的, 将导致编译时刻错误, 所以要显示指明调用哪个基类的哪个成员 Base::member
5.public派生被称为类型继承(type inheritance) --派生类是基类的子类型
   提供了较一般的基类的一种特化
6.private派生被称为实现继承(implementation hinheritance) --派生类不直接支持基类的公有接口, 提供了自己的公有接口, 重用基类的实现
   private基类放映了一种"并非基于子类型关系"的继承形式, 基类的整个公有接口在派生类中变成private
7.对于is-a子类型关系来说, public继承是一个很有利的机制
8.has-a关系一般由组合(composition)而不是继承来支持 --使一个类称为另一个类的成员
   a:如果我们希望改写一个类的虚拟函数, 则必须使用私有继承而不是使用组合
   b:如果我们希望一个类能够引用"一个包含多种可能类型的层次结构"中的一个类, 那么就必须通过引用使用组合
   c:如果只是希望简单的重用实现, 则按值组合比继承更好
   d:如果希望对象的迟缓型分配, 按引用(使用一个指针)组合通常是一个不想的设计选择
9.免除(exempting)个别成员的私有继承影响
   以私有方式继承, 基类的所有protected和public成员全被继承为子类的私有成员
   类设计者可以针对基类的个别成员, 是其免除非公有派生的影响:
      class CSub: private CBase {
      public:
          using CBase::Member;
      };
   免除个别成员的另一个原因是允许后续的派生类访问私有基类的protected成员
   派生类只能将继承得到的成员恢复到原来的访问级别, 该访问级别不能比基类中原来指定的级别更严格或更不严格
10.protected继承 --基类的所有公有成员都成为派生类的protected成员
11.对象组合有两种形式
   a:按值组合(Composition by value)
   b:按引用组合(Composttion by reference)
12.虚拟继承(virtual inheritance) --在虚拟继承下, 只有一个共享的基类子对象被继承, 而无论该基类在派生层次中出现多少次
   共享的基类子对象被称为虚拟基类(vitual base class)
   在虚拟继承下, 基类子对象的复制及由此引起的二义性都被取消了
13.虚拟继承的语法:
    CSub: public virtual CBase1, public virtual CBase2 {...};
   virtual 和 public的顺序不重要