我发现这两个例子在概念上是相同的——但一个是组合,另一个是聚合。
在第一个示例中,关系“class (has-a) students”是一个组合。
一个班级包含学生。没有班级,学生就无法存在。班级和学生之间存在着组合。
在第二个示例中,关系“部门(有)教授”是一个聚合。
如果大学关闭,这些部门将不复存在,但这些部门的教授将继续存在
在我看来,第一个是完全错误的。请注意,在这个SO 问题的评论部分,@TallPaul 也在质疑第一个示例。我认为在实践中,它会从系统中删除每学期后参加课程的所有学生。此外,学生可能必须由类在初始化时创建,因为 C++ 中的组合通常是作为私有属性(而不是指针)实现的。我对吗?第一个例子有什么意义吗?