您的位置:首页 > 其它

第十四周 【项目3-立体类族共有的抽象类】

2014-05-27 09:12 369 查看
#include<iostream>
using namespace std;
class CSolid
{
public:
virtual double area() const =0;
virtual double vv() const =0;
};
class CCube:public CSolid
{
private:
double r;
public:
CCube(double rr):r(rr){};
virtual double area() const
{
return r*r*6;
}
virtual double vv() const
{
return r*r*r;
}
};
class CBall:public CSolid
{
private:
double r;
public:
CBall(double rr1):r(rr1){};
virtual double area() const
{
return 4*3.14*r*r;
}
virtual double vv() const
{
return (4/3)*r*r*r*3.14;
}
};
class CCylinder:public CSolid
{
private:
double r;
double h;
public:
CCylinder(double rr,double hh):r(rr),h(hh){};
virtual double area() const
{
return 3.14*r*r*2+2*3.14*r*h;
}
virtual double vv() const
{
return 3.14*r*r*h;
}
};
int main()
{
CSolid *p;
double s,v;
CCube x(3);
cout<<"立方体边长为 3 "<<endl;
p=&x;
s=p->area( );
v=p->vv( );
cout<<"表面积:"<<s<<endl;
cout<<"体积:"<<v<<endl;
cout<<endl;
CBall y(4.5);
cout<<"球体半径为 4.5 "<<endl;
p=&y;
s=p->area( );
v=p->vv( );
cout<<"表面积:"<<s<<endl;
cout<<"体积:"<<v<<endl;
cout<<endl;
CCylinder z(1,2);
cout<<"圆柱体底面半径、高分别为 1, 2"<<endl;
p=&z;
s=p->area( );
v=p->vv( );
cout<<"表面积:"<<s<<endl;
cout<<"体积:"<<v<<endl;
cout<<endl;
return 0;

}


运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: