我正在尝试使用C ++中的多态性进行练习以计算以下层次结构中图形的面积和体积
Shape
TwoDimensionalShape ThreeDimensional
Circle Square Triangle Sphere Cube
我在Shape类中声明了虚函数getArea和getVolume,例如在Circle类中,该函数是:
double Circle::getArea() const
{
return 3.14*radius*radius;
}
其中radius在circle类中是私有的。
但是我对应该在TwoDimensionalShape类中包括什么以及应该在其中声明一个可变区域的问题有所保留。
您在中间级别的类中不需要数据成员。它们仅用于层次结构抽象,以便说Circle是TwoDimensionalShape。您稍后可能会引用一些函数,TwoDimensionalShape
并可以在其中传递Circle
或Triangle
,但是没有其他任何非TwoDimensionalShape可以。
作为数据成员,您可以在Shape
其内部包含一些标志。数据成员将指定当前对象的类型。您可以拥有enum
相同的功能。这将用于静态声明和运行时检查。这也可能在某些方面有所帮助,而无需虚拟功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句