定義:has-a關係,乙個類中有包含另乙個類,是包含乙個物件,不是包含乙個指標。如果你組合了這個類,那麼你將擁有這個類的全部功能
#include#include template class queue //利用deque的功能來實現queue新定義的功能
size_t size() const
reference front()
reference back()
void push(const value_type& x)
void pop()
};
通常來說queue可以由deque來實現,在deque已有的特性上進行更改得到想要特性,這個時候我們就稱queue組合了deque.組合關係
queue與deque的類圖為
如****和上圖所示,queue的記憶體為40bit
構造由內而外:先呼叫component,在呼叫container的建構函式
析構由外而內:container先析構自己,在呼叫component的析構函式
container和component具有相同的生命週期
定義為has-a pointer ,乙個類包含另乙個類的指標,你也同樣擁有被包含類的全部功能。
class stringrep;
class string ;
class stringrep
如上**所示,string擁有乙個stringrep的指標,通常使用橋接設計模式來使用handle/body,handle通常只包含乙個指標,資料實體擋在body中,這樣可以減少前者的記憶體空間,同時分離兩者的生命週期。
包含乙個指標 4bit
不發生影響
生命週期可以不相同
簡單易懂 c 中組合與聚合
組合 即不十分相關的東西,整合在一起。譬如 電腦是乙個類,由滑鼠 鍵盤 顯示器 主機這4個類組合而成,可插拔。實現中 一般為傳引數。聚合 即類的本身屬性,密不可分割。譬如 人是乙個類,由手臂 大腿 軀幹三個類組成,不可分割,生命週期相同。實現中 一般為成員屬性。c 舉例來看 組合 傳引數 inclu...
關聯 聚合 組合
關聯 聚合 aggregation 以及組合 composition 的區別?涉及到uml中的一些概念 關聯是表示兩個類的一般性聯絡,比如 學生 和 老師 就是一種關聯關係 聚合表示 has a 的關係,是一種相對鬆散的關係,聚合類不需要對被聚合類負責,如下圖所示,用空的菱形表示聚合關係 從實現的角...
聚合,組合,依賴
1.聚合 是關聯關係的一種特例,體現的是整體與部分擁有的關係,即 has a 的關係,此時整體與部分之間可以分離。cpp view plain copy 學校 class school 學生 class student 可以看到 student 類中包含了乙個 school 類的物件 指標,而且在建...