定义一个基类圆形Circle类 定义一个基类圆形Circle类,它有一个私有数据成员radius和成员函数Area().Area()可以求圆的面积.从Circle类可以派生出圆柱体Cylinder类,它有自己的私有数据成员高度height,它也有成员函数Area()来求圆柱体的表面积.分别建立Circle类和Cylinder类的对象,设计一个函数分别求它们的面积,试用虚函数来解决多态问题.

问题描述:

定义一个基类圆形Circle类
定义一个基类圆形Circle类,它有一个私有数据成员radius和成员函数Area().Area()可以求圆的面积.从Circle类可以派生出圆柱体Cylinder类,它有自己的私有数据成员高度height,它也有成员函数Area()来求圆柱体的表面积.分别建立Circle类和Cylinder类的对象,设计一个函数分别求它们的面积,试用虚函数来解决多态问题.

#include "stdio.h"
const double P=3.14;
class Circle{
public:
virtual double Area();
void R(double s);
double getr();
private:
double radius;
};
void Circle::R(double r)
{
radius=r;
}
double Circle::getr()
{
return radius;
}
double Circle::Area()
{
return P*radius*radius;
}
class Cylinder:public Circle
{
public :
Cylinder(double h1);
double R(double r);
double Area();
void A(Circle cc);
private :
double h;
double s;
};
Cylinder::Cylinder( double h1)
{
h=h1;
}
void Cylinder::A(Circle cc)
{
s=cc.Area()+2*P*h*cc.getr();
}

double Cylinder::Area()
{
return s;
}
void main()
{
Circle c;
c.R(1);
printf("圆的面积为:%0.2f\n",c.Area());
Cylinder c1(1);
c1.A(c);
printf("圆柱体的面积为:%0.2f\n",c1.Area());
}