10扩展补充:类模板,函数模板,及其他

  • 静态static

    静态的函数只能处理静态的数据

    静态数据初始化方法

    静态函数两种调用方法,没有对象也可以调用

  • Singleton

    构造函数放在private,限制对象只有一个

    优化Meyers Singleton

  • cout是ostream类型

  • 模板template

    template <typename T>

  • 函数模板

    template <class T>

  • namespace

    将名字封装,using namespace将封装打开

  • 更多细节
    operator type() const类型转换重载
    explicit构造函数
    pointer-like object
    function-like object
    template specialization
    Standard Library

    C++11等
    variadic templete
    move ctor
    Rvalue reference
    auto
    lambda
    range-base foe loop
    unordered containers

11组合与继承

  1. 继承
  2. 复合composition
  3. 委托delegation
  • 复合

    拥有关系,容器Container拥有组件Component

    • 构造由内而外

      container的构造函数首先调用component的默认构造函数,再调用自己的

    • 析构由外而内

  • 委托

    拥有关系,拥有的是指针
    pimpl

  • 继承

    三种继承方法,重点是public继承

    所属关系

    • 构造构内而外,子类首先调用父类默认构造函数,再调用子类构造函数

    • 析构由外而内

      父类的析构函数必须为虚函数virtual

12 虚函数与多态

  • 虚函数

    • 非虚函数non-virtual:不希望子类重新定义(覆写override)
    • 虚函数virtual:希望子类重新定义
    • 纯虚函数pure virtual:子类一定要重新定义,因为父类没有定义
  • 继承+虚函数的设计模式Template Method

  • 继承和复合,

  • 委托和继承

    以UI举例

13委托相关设计模式

  • composite模式,以file system为例

  • Prototype
    未来的子类名称未知