我正在尝试使用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 回答
您不需要中级级别中的数据成员 . 它们仅用于层次结构抽象,以便说Circle是一个TwoDimensionalShape . 您可能稍后有一些函数参考
TwoDimensionalShape
,您可以在哪里传递Circle
或Triangle
,但不能传递任何其他非TwoDimensionalShape .作为数据成员,您可以在
Shape
中拥有一些标志 . 数据成员将指定当前对象的类型 . 你也可以enum
. 这将用于静态断言以及运行时检查 . 这在某些方面也可能有所帮助,而不需要虚函数 .