从值类继承还是复合呢?

时间:2017-07-09 10:32:15

标签: c++ inheritance composition value-class

我有以下几个类:

class A{
  int x;
  int y;
  int z;
  public:
    int getX();
    int getY();
    int getZ();
  //...
}

class B{
  int x;
  int y;
  int z;
  double rotation;
}

class C{
  int x;
  int y;
  int z;
  double dir;
  double index;
}

类B和C有共同的A类参数,从A类继承或使用复合并在B和C类中存储A对象是一种好习惯吗?

从A类继承时,没有必要重新实现B和C的A函数,但是每个人都说复合优于继承!哪一个更好?

编辑:假设两个条件:是 - 一个关系,否则,假设我是班级"点" as" A"提到的课程和我有一个具有纬度,经度和海拔的gps数据,在某些课程中我想为它添加一些坐标信息。目前尚不清楚gps数据是一个点还是有点!

1 个答案:

答案 0 :(得分:4)

这取决于你的班级定义以及基础班级和非班级班级之间的关系。

我来告诉你一个例子。假设有一个类定义了一个枪。警察或士兵可能有枪,但他们都不是枪。所以,你最好定义警察和士兵课程,让他们成为枪支班级。类inheit的这种用法被称为'has-a'关系。

但是,如果要定义具有特殊功能的新枪,则可以继承枪类并编写一些演示这些功能的新功能。这就是所谓的'是-a'关系。