TwoDimensionalShape类应该包含什么?

时间:2015-06-26 13:42:50

标签: c++ oop polymorphism

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

                                       Shape
                 TwoDimensionalShape            ThreeDimensional

            Circle    Square   Triangle           Sphere   Cube

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

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

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

但是我对于我应该在TwoDimensionalShape类中包含什么以及我是否应该在其中声明一个变量区域有点困惑。

1 个答案:

答案 0 :(得分:0)

您不需要中级级别中的数据成员。它们仅用于层次结构抽象,以便说 Circle是一个TwoDimensionalShape 。您稍后可能会参考<div class="col-md-3"> <div class="feature"> <div class="feature-header slide-0" style="background-image: url('http://placehold.it/125/150')"> <div class="feature-meta"> <i class="fa fa-camera"></i> 3 </div> </div> <div class="feature-header slide-1" style="background-image: url('http://placehold.it/125/150')"> <div class="feature-meta"> <i class="fa fa-camera"></i> 3 </div> </div> <div class="feature-header slide-2" style="background-image: url('http://placehold.it/125/150')"> <div class="feature-meta"> <i class="fa fa-camera"></i> 3 </div> </div> <div class="feature-body"> <h2>JK Simmons</h2> <p>JK Simmons 'Whiplash' interview</p> <a href="#" class="btn btn-ihub btn-block">View</a> </div> </div> </div> 并参考TwoDimensionalShapeCircle,但不能传递任何其他非二维形状。

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