C++面向对象高级编程(上)笔记三(Boolan)

让类与类之间产生关系

1.复合(composition)

deque的功能足够queue使用,可以采用这种方式调用deque里的功能。

即表示 has-a

从存储空间的角度看,可以理解为:

在复合关系存在的情况下,调用构造和析构函数的顺序不同。

先从内部建立,先从外部瓦解。

2.委托(delegation)

用指针相传,寿命不一致。

有复合关系的寿命是一起的。委托是在需要的时候才创建。

或称 编译防火墙。

共享

3.继承(inheritance),表示is-a

父类的数据是被完整继承下来的。还不是最有价值的部分,想要有价值,需要跟虚函数搭配。

继承关系下的构造与析构:

子类的对象里有父类的成分。

继承搭配虚函数(virtual functions)

继承函数的调用权

non-virtual函数:你不希望子类重新定义(override)。

virtual函数:希望子类重新定义它。

pure virtual函数:希望子类一定要定义它,没有默认定义。

虚函数经典用法

继承+复合关系下的构造与析构

功能最强大:委托+继承

用这三个武器联系起来组成解决问题的模式

Adapter       pImpl         Template Method         Observer         Composite          Prototype

你可能感兴趣的:(C++面向对象高级编程(上)笔记三(Boolan))