继承和组合有什么区别?

shu*_*jan 6 oop design-patterns

正如标题所说,两者的含义都让我难以理解。

pmr*_*pmr 3

继承表达了一种is-a关系,而组合表达了一种has-a两个类之间的关系。

组合的一个示例是多边形。它具有有序的点序列。用 C++ 术语来说:

struct Polygon {
  std::vector<Point> points;
};
Run Code Online (Sandbox Code Playgroud)

虽然 anlogic_error是 a exception

struct logic_error : public exception {
};
Run Code Online (Sandbox Code Playgroud)