跳至主要內容

包含和嵌套

LincZero小于 1 分钟

包含和嵌套

(1) 包含

  • 简概
    • 包含(contaionment)、组合(composition)或层次化(layering
    • 被包含的类也叫组件类
  • 使用
    • 在类中声明其他类的实例,调用时通过成员运算符访问其他类的接口方法
  • 使用场景
    • 包含、私有继承,均可实现has-a关系
    • 设计模式推荐使用包含(组合)代替继承

(2) 嵌套类(nested class

嵌套在类中结构声明(类 x 结构、类、枚举)

  • 嵌套在类中
    • 在类声明中声明结构、类、枚举,被称为被嵌套在类中
    • 这里嵌套的不是具体的数据对象,而是模板,不会创建数据对象,而只是指定了可以在类中使用这种类型
  • 使用
    • 如果在私有部分声明,则只能在这个类使用被声明的类型
    • 如果在公有部分声明,则可以用类的外部通过作用域解析运算符使用
      • 例如:如果结构体NodeQueue的公有部分声明,则可以在类的外面声明Queue::Node类型的变量