让类与类之间产生关系
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