首页 > 试题广场 >

使用虚函数编写程序,求球体和圆柱体的体积及表面积。由于球体和

[问答题]

使用虚函数编写程序,求球体和圆柱体的体积及表面积。由于球体和圆柱体都可以看做由圆继承而来,因此,可以把圆类Circle作为基类。在Circle类中定义一个数据成员radius及两个虚函数area和volume。由Circle类派生Sphere类和Column类。在派生类中对虚函数area和volume重新定义,分别求球体和圆柱体的体积及表面积。

推荐
#include <iostream>
using namespace std;
const double PI=3.14159265;
class circle
{
 public:
     circle(double r) { radius = r; }
        virtual double area() { return 0.0; }
     virtual double volume() { return 0.0; }
  protected:
        double radius;
};
class sphere:public circle
{
  public:
         sphere( double r ):circle( r ){}
         double area()
{ return 4.0 * PI * radius * radius; }
         double volume()
       { return 4.0 * PI * radius * radius * radius / 3.0; }
};
class column:public circle
{
 public:
       column( double r,double h ):circle( r ) { height = h; }
       double area()
     { return 2.0 * PI * radius * ( height + radius ); }
       double volume()
     { return PI * radius * radius * height;    }
private:
        double height;
};
int main()
{
circle *p;
sphere sobj(2);
p = &sobj;
cout << "球体:" << endl;
cout << "体积= " << p->volume() << endl;
cout << "表面积= " << p->area() << endl;
column cobj( 3,5 );
p = &cobj;
cout << "圆柱体:" << endl;
cout << "体积= " << p->volume() << endl;
cout << "表面积= " << p->area() << endl;
}

发表于 2018-05-07 15:23:14 回复(0)