組合 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
構造先構造父類,再構造子類
析構先析構子類,再析構父類