对象成员变量还是继承

Object member variable or inheritence?

本文关键字:继承 变量 成员 对象      更新时间:2023-10-16

我一直在练习继承,我发现自己在问"has-a"关系到底是关于什么的。

如果我有一个类circleType,并且我想创建一个类别cylinderType,那么从circleType派生cylinderType和在cylinderType的定义中只包含一个circleType对象成员之间有什么区别

class cylinderType :
public circleType
{
public:
cylinderType();
~cylinderType();
private:
double * height;
};

或:

class cylinderType
{
public:
cylinderType();
~cylinderType();
private:
circleType baseOfCylinder;
};
当is-a关系不成立时,更喜欢组合而不是继承。在这种情况下,圆柱体不是圆的类型,因此(公共(继承是不合适的。

记住,从另一个类公开继承的类可以在任何可以使用父类的地方使用。例如,给定OP中的定义,以下内容是完全有效的,即使计算圆柱体的面积没有多大意义:

double area(const circleType& circle)
{
return PI * circle.radius() * circle.radius();
}
int main()
{
cylinderType cylinder;
std::cout << area(cylinder);
}