首页 文章

TwoDimensionalShape类应该包含什么?

提问于
浏览
1

我正在尝试使用C中的多态进行练习,以计算以下层次结构中的数字的面积和体积

Shape
                 TwoDimensionalShape            ThreeDimensional

            Circle    Square   Triangle           Sphere   Cube

我在Shape类中声明了一个虚函数getArea和getVolume,例如在Circle类中,函数是:

double Circle::getArea() const
{
    return 3.14*radius*radius;
}

其中radius是圆类中的私有 .

但是我对于应该包含在TwoDimensionalShape类中的内容以及我是否应该声明其中的变量区域有点困惑 .

1 回答

  • 0

    您不需要中级级别中的数据成员 . 它们仅用于层次结构抽象,以便说Circle是一个TwoDimensionalShape . 您可能稍后有一些函数参考 TwoDimensionalShape ,您可以在哪里传递 CircleTriangle ,但不能传递任何其他非TwoDimensionalShape .

    作为数据成员,您可以在 Shape 中拥有一些标志 . 数据成员将指定当前对象的类型 . 你也可以 enum . 这将用于静态断言以及运行时检查 . 这在某些方面也可能有所帮助,而不需要虚函数 .

相关问题