组合&聚合

组合(Composition)
聚合(Aggregation)
若对象A中存在一个对象成员B
若B为引用,即当A消亡后B不会随之消亡,仍有另外一个对象指向B,则称为聚合
若B为在A中另外开辟的新空间,当A消亡后B随之消亡,即不存在另外的对象指向B,则称为组合
图片说明

其中对象s中的val1成员采用聚合的方式,val2成员采用组合的方式
将对象temp同时赋值给s对象的val1成员和val2成员
使用自定义的display方法,可以看见s中的val1和val2均为"abcd"
当在对象s外修改对象temp的内容后再次调用s的display方法,发现val1的值随着temp的改变而改变了
原因是val1只是保存了对象temp的引用,而没有开辟一个新的空间来储存,当temp对象改变后,原先指向temp的val1成员也随之改变,而val2开辟了一个新的存储空间来存放,因此不受影响