C++面向对象高级编程_第三周

类与类之间的关系

 组合 composition  has-a 关系,

继承 inheritance is-a 关系 

委托 delegation 是 Compsition by reference 指针。


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


C++面向对象高级编程_第三周_第1张图片
Composition

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

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

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


C++面向对象高级编程_第三周_第2张图片
Inheritance

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

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


继承和虚函数 inheritance with virtual functions

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

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

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

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


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


C++面向对象高级编程_第三周_第3张图片
Inheritance&Composition

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

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

你可能感兴趣的:(C++面向对象高级编程_第三周)