从值类继承还是复合它?

Inherit from value class or composite it?

本文关键字:复合 继承      更新时间:2023-10-16

我有以下类:

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 函数,但每个人都说复合比继承更好! 那么哪一个更好呢?

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

这取决于你的类定义以及基类和无序类之间的关系。

我举个例子。假设有一个类定义枪。警察或士兵可能有枪,但他们都不是枪。因此,您最好将警察和士兵类定义为将枪支类作为其成员。这种对阶级的用法就是所谓的"有"关系。

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