【Boolan】第三周笔记

1.类与类之间的三种关系:1)Inheritance(继承) 2)Composition(复合) 3)Delegation(委托)
2.Composition复合关系,可理解为has a

复合关系下的构造函数:
  从内而外,Container的构造函数先调用Component的default构造函数,再执行自己
Container::Container(...):Component() {};
复合关系下的构造函数:
  从外而内,Container的析构函数先执行自己,然后再调用Component的析构函数
Container::~Container(...){ ... ~Component() };

  PS:可理解为脱衣服跟穿衣服,构造是穿衣服,先穿里面的再穿外面的,析构是脱衣服,先脱外面的再穿外面的

3.Delegation委托关系:Composition by reference
4.Delegation继承关系,可理解为is a
PS:如苹果与水果的关系,苹果是一种水果

继承关系下的构造函数:
  从内而外,Derived的构造函数先调用Base的default构造函数,再执行自己
  Derived::Derived(...):Base() {};
继承关系下的构造函数:
  从外而内,Derived的析构函数先执行自己,然后再调用Base的析构函数
  Derived::~Derived(...){ ... ~Base() };
  PS:与复合关系一样

5.Inheritance with virtual function

not-virtual function:不希望derived class 重新去定义,保持这个函数不变
virtual function:derived class可以重新定义,但其有默认值,所以也可以不重新定义
pure virtual function:derived class必须重新定义,因为不存在默认定义

6.Composite:Inheritance+Composition关系

继承复合关系下的构造函数:
  从内而外,Derived的构造函数先调用Base的default构造函数,再执行自己
  Derived::Derived(...):Base() , Component() {...};
继承复合关系下的构造函数:
  从外而内,Derived的析构函数先执行自己,然后再调用Base的析构函数
  Derived::~Derived(...){ ... ~Componet() , ~Base() };

7.创建未来才会出现的子类:Delegation+Inheritance(Prototype)

你可能感兴趣的:(【Boolan】第三周笔记)