//姓名:李晓凡
//时间:2015.6.6
// 设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。
//设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。
//在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)
//要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。
#include<iostream>
using namespace std;
class CSolid
{
public:
virtual double Area()=0;
virtual double V()=0;
double P=3.1415926;
};
class CCube:public CSolid
{
protected:
double R;
public:
CCube(double r=0):R(r){}
virtual double Area();
virtual double V() ;
};
class CBall:public CSolid
{
protected:
double r;
public:
CBall(double R=0):r(R){}
virtual double Area();
virtual double V();
};
class CCylinder:public CSolid
{
protected:
double r;
double h;
public:
CCylinder(double R=0,double H=0):r(R),h(H){}
virtual double Area();
virtual double V();
};
double CCube::Area()
{
return 6*R*R;
}
double CCube::V()
{
return R*R*R;
}
double CBall::Area()
{
double n;
n=4*P*r*r;
return n;
}
double CBall::V()
{
double n;
n=(4*P*r*r*r)/3;
return n;
}
double CCylinder::Area()
{
return 2*P*r*(r+h);
}
double CCylinder::V()
{
return P*r*r*h;
}
int main()
{
CSolid *p;
double s,v;
CCube x(30.0);
cout<<"立方体边长为 30 "<<endl;
p=&x;
s=p->Area( );
v=p->V( );
cout<<"表面积:"<<s<<endl;
cout<<"体积:"<<v<<endl;
cout<<endl;
CBall y(4.5);
cout<<"球体半径为 4.5 "<<endl;
p=&y;
s=p->Area( );
v=p->V( );
cout<<"表面积:"<<s<<endl;
cout<<"体积:"<<v<<endl;
cout<<endl;
CCylinder z(10,20);
cout<<"圆柱体底面半径、高分别为 10, 20"<<endl;
p=&z;
s=p->Area( );
v=p->V( );
cout<<"表面积:"<<s<<endl;
cout<<"体积:"<<v<<endl;
cout<<endl;
return 0;
}
13.3 立体类族共有的抽象类
最新推荐文章于 2022-11-28 13:31:14 发布