【发布时间】:2017-12-13 04:57:15
【问题描述】:
我有以下课程:
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 函数,但每个人都说复合比继承更好!那么哪个更好呢?
编辑:假设两个条件:is-a 关系,否则,假设我将“Point”类列为提到的“A”类,并且我有一个具有纬度、经度和海拔的 gps 数据,并且在某些类中我想要为其添加一些坐标信息。不清楚gps数据是点还是有点!
【问题讨论】:
-
视情况而定。此代码性能敏感吗?有时,当您因为太慢而无法以理想的方式做事时,就会出现最严重的妥协。
-
继承表示“is-a”关系,仅当
B和C是A时才使用它。任何派生类都可以分配给基类,如果没有这样的关系,这将是非常危险的 -
如果那些
...是直接分配给成员的setX(), setY(), setZ(),你只是以冗长的方式实现了直接访问。这不是封装的意思。
标签: c++ inheritance composition value-class