C++回炉之_C++PrimerPlus_第十四章 C++中的代码重用

has-a

  • 组合关系

    • 是一种包含关系
    • 获得了其所包含对象的实现, 但没有继承其接口 -- 区别于公有继承
      • 不能直接使包含对象的方法作为自己的方法
    • 使用初始化表的方式初始化所包含的对象 -- 使用成员对象名而非类名初始化
      • 成员变量的初始化顺序为它们被声明的顺序,而非初始化表中的数据
      • 如果某个成员的初始依赖另一个成员,需要将后者放在它的前面声明
      • 如果不使用初始化表,将优先构造成员对象 -- 使用成员对象的默认构造方法
  • 私有继承

    • 另一种 has-a 关系

has-a

  • 组合关系

    • 是一种包含关系
    • 获得了其所包含对象的实现, 但没有继承其接口 -- 区别于公有继承
      • 不能直接使包含对象的方法作为自己的方法
    • 使用初始化表的方式初始化所包含的对象 -- 使用成员对象名而非类名初始化
      • 成员变量的初始化顺序为它们被声明的顺序,而非初始化表中的数据
      • 如果某个成员的初始依赖另一个成员,需要将后者放在它的前面声明
      • 如果不使用初始化表,将优先构造成员对象 -- 使用成员对象的默认构造方法