簡單易懂 c 中組合與聚合

2021-07-06 04:54:39 字數 1149 閱讀 2875

組合:即不十分相關的東西,整合在一起。譬如:電腦是乙個類,由滑鼠、鍵盤、顯示器、主機這4個類組合而成,可插拔。實現中:一般為傳引數

聚合:即類的本身屬性,密不可分割。譬如:人是乙個類,由手臂、大腿、軀幹三個類組成,不可分割,生命週期相同。實現中:一般為成員屬性

c++舉例來看:

//組合(傳引數)

#include using namespace std;

class frind;

protected:

int money=10;

};class add*/

//protected:

void func(frind* mpfrind);

};void add(frind* pfrind)

int main()

執行結果如圖:

//聚合(屬性成員)

#include using namespace std;

class frind;

protected:

int money=10;

};class add

//protected:

void func();

private:

frind* mpfrind; //內部屬性

};void add(frind* pfrind)

int main()

執行結果如圖:

兩種方式執行結果一樣,具體用哪種方式更優,視情況而定(不在本文討論範圍)。

多補充乙個知識點,多型的作用(仔細分析哦,很經典的):

1、統一介面,高度復用

2、向後相容,靈活擴充套件

組合與聚合

定義 has a關係,乙個類中有包含另乙個類,是包含乙個物件,不是包含乙個指標。如果你組合了這個類,那麼你將擁有這個類的全部功能 include include template class queue 利用deque的功能來實現queue新定義的功能 size t size const refer...

C 組合(聚合)與C結構體中包含函式

今天突然想到c 的聚合,以前一直沒有注意,今天想到就寫下來,做個筆記 c 的類與我們的c語言中的結構體特別像,但是有有些不太一樣,這裡不多累贅了不能,大家學過的都知道。c 組合 聚合 我們知道的都是c 的類的物件,也就是例項化的過程,但是,有時候一些類我門需要他以聚合的形式來使用,比如設計模式裡面用...

UML中的聯絡 聚合與組合的區別

uml中的聯絡 association 聚合 aggregation 和組合 composition 三個概念很相似,也很難理解。今天看到這篇文章解釋得很清楚,所以在這裡轉一下,希望能對需要的人有所幫助。聯絡 聯絡 association 表明某個物件可以向另乙個物件通過某種方式傳送訊息。傳送訊息的...