对象成员变量还是继承?

0 c++ oop polymorphism inheritance

我一直在练习继承,我发现自己在问一个"有一个"关系是什么.

如果我有一个类circleType,我想创建一个类cylinderType,什么派生的区别cylinderTypecircleType,只是包括circleType在定义对象成员cylinderType

class cylinderType :
public circleType
{
public:
    cylinderType();
    ~cylinderType();

private:
    double * height;
};
Run Code Online (Sandbox Code Playgroud)

要么:

class cylinderType
{
public:
    cylinderType();
    ~cylinderType();

private:
    circleType baseOfCylinder;
};
Run Code Online (Sandbox Code Playgroud)

Mil*_*nek 6

当is-a关系不成立时,首选组合继承.在这种情况下,圆柱体不是一种圆形,因此(公共)继承是不合适的.

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

double area(const circleType& circle)
{
    return PI * circle.radius() * circle.radius();
}

int main()
{
    cylinderType cylinder;
    std::cout << area(cylinder);
}
Run Code Online (Sandbox Code Playgroud)