组合 composition 表示has a
queue类中有一个deque容器,这种关系叫做 组合
queue中的六个函数都是调用c的函数完成的
template <class T>
class queue {
...
protected:
deque<T> c; // 底層容器
public:
// 以下完全利用 c 的操作函數完成
bool empty() const { return c.empty(); }
size_type size() const { return c.size(); }
reference front() { return c.front(); }
reference back() { return c.back(); }
//
void push(const value_type& x) { c.push_back(x); }
void pop() { c.pop_front(); }
};
图中黑色表示组合,白色表示委托
构造由内而外,析构由外而内
委托 Delegation
String类中有一个指针指向StringRep,这种关系叫 委托
继承 inheritance 表示 is a
构造先构造父类,再构造子类
析构先析构子类,再析构父类