Geekband_C++面向对象高级编程_第三周学习笔记

来源:互联网 发布:那个淘宝网站的商品是正品 编辑:程序博客网 时间:2024/05/21 10:23

(1)类与类之间的关系

 组合 composition  has-a 关系,

继承 inheritance is-a 关系 

委托 delegation 是 Compsition by reference 指针。


compositon 的析构和构造, 构造由内而外(建房子), 析构由外而内 (拆房子)。



Composition

构造,Container先调用Component的构造函数,再调用自己的构造函数。Container::Container():Component(){...}

析构,Container先调用自己的析构函数,再调用Component的析构函数。Container::~Container(){... ~Component()}

(2)inheritance 的构造和析构,构造由内而外(建房子), 析构由外而内 (拆房子)。



Inheritance

构造,Derived先调用Base的构造函数,再调用自己的构造函数。Derived::Derived():Base(){...}

析构,Derived先调用自己的析构函数,再调用Base的析构函数。Derived::~Derived(){... ~Base()}


(3)继承和虚函数 inheritance with virtual functions

虚函数:基类中的成员函数,虚函数重新定义 override

non-virtual函数,不希望派生类重新定义它。void draw();

virtual函数,希望派生类重新定义,且基类对此已有默认定义。virtual void draw();

pure virtual 函数,希望派生类一定要重新定义它,基类对它没有默认的定义。virtual void draw() = 0;


(4)继承和组合 Inheritance & Composition,构造由内而外, 析构由外而内 。



Inheritance&Composition

第一种情况:构造 Base -> Component -> Derived 析构 Derived -> Component -> Base

第二种情况:构造 Component -> Base -> Derived 析构 Derived -> Base -> Component

0 0