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

                                       Shape
                 TwoDimensionalShape            ThreeDimensional

            Circle    Square   Triangle           Sphere   Cube


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

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


其中半径在圆形类中是私有的。

但是我对应该在TwoDimensionalShape类中包括什么以及是否应该在其中声明一个变量区域有些犹豫。

最佳答案

您在中间级别的类中不需要数据成员。它们仅用于层次结构抽象,以便说Circle是TwoDimensionalShape。您稍后可能会具有一些引用TwoDimensionalShape的功能,并且可以在其中传递CircleTriangle,但不能传递任何其他非TwoDimensionalShape。

作为数据成员,您可以在Shape本身中包含一些标志。数据成员将指定当前对象的类型。您可以将enum设置为相同。这将用于静态声明和运行时检查。这也可能在某些方面有所帮助,而无需虚拟功能。

10-06 01:50