面向对象三大类:
Composition 复合
Delegation 委托
Inheritance 继承
一、Compositon复合
表示has a
构造由内而外
container构造函数首先调用Cmoponent的default构造函数,然后再执行自己
析构由外而内
container构造函数首先执行自己,再调用Component的析构函数
二、Delegation 委托
pointer to implementation
三、Inheritance 继承
表示 is a
public:父类的数据被完成继承
构造由内而外
Derived的构造函数首先调用Base的default构造函数,再执行自己
析构由外而内
Derived析构函数首先执行自己,再调用Base的析构函数
Base的dtor必须是virtual,否则会undefined behavior
函数加virtual变成虚函数
non-virtual:不希望drived class 重新定义
virtual函数:希望derived class重新定义,且对它已有默认定义
pure virtual函数:derived class一定要重新定义,且对它没有默认定义
Template Method 被广泛应用于Application framework,其中大量使用虚函数