c++ - 从值类继承还是复合呢?

标签 c++ inheritance composition value-class

我有以下类(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 类继承或使用复合并将 A 对象存储在 B 类和 C 类中是好的做法吗?

从A类继承时,没有必要为B类和C类重新实现A函数,但大家都说复合比继承好!那么哪个更好呢?

编辑:假设两个条件:是一个关系,否则,假设我将“点”分类为提到的“A”类,并且我有一个具有纬度、经度和海拔的 gps 数据,在某些类中我想要向其添加一些坐标信息。不清楚gps数据是一个点还是有一个点!

最佳答案

这取决于您的类定义以及基类和继承类之间的关系。

让我告诉你一个例子。假设有一个类定义了一把枪。警察或士兵可能有枪,但他们都不是枪。因此,您最好将警察和士兵类定义为将枪支类作为其成员。类继承的这种用法称为“has-a”关系。

但是,如果你想定义一把具有特殊功能的新枪,你可以继承枪类并编写一些新的功能来演示这些功能。这就是所谓的“is-a”关系。

关于c++ - 从值类继承还是复合呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44995417/

相关文章:

java - 如何理解码成和转发方式?

c++ - Halcon 9.0 在 Windows 10(但不是 Windows 8.1)下生成错误

c++ - 如何获取 linux 的已知路径

Javascript 简单原型(prototype)继承

oop - 对象的组成

inheritance - 通过组合模拟字段继承

c++ - 从文件中读取带有空格和数字数据的文本

c++ - 反转两个节点之间的链表

c# - 如何在 C# 中使用派生类型覆盖泛型方法

class - Swift 继承类