美文网首页
【Boolan】第三周笔记

【Boolan】第三周笔记

作者: 听说名字长一点不会重复 | 来源:发表于2017-11-04 12:56 被阅读0次

    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】第三周笔记

          本文链接:https://www.haomeiwen.com/subject/jjpfmxtx.html