我做了两个设计
第一个
#include<iostream>
using namespace std;
class Grap{ //图形类
protected:
float a;
public:
Grap(float a):a(a){}
virtual float area()=0; //表面积
virtual float volume()=0; //体积
};
class Square: public Grap{ //正方体
public:
Square(float a):Grap(a){}
float area();
float volume();
};
float Square::area(){
return (6*a*a);
}
float Square::volume(){
return (a*a*a);
}
class Cyl:public Grap{//圆柱体类
private:
float h;//圆柱的高
public:
Cyl(float a,float h):Grap(a),h(h){}
float area();
float volume();
};
float Cyl::area(){
return (2*3.14*a*a+2*3.14*a*h);
}
float Cyl::volume(){
return (3.14*a*a*h);
}
class Sphere:public Grap{ //球体类
public:
Sphere::Sphere(float a):Grap(a){}
float area();
float volume();
};
float Sphere::area(){
return (4*3.14*a*a);
}
float Sphere::volume(){
return (4.0/3*3.14*a*a*a);
}
int main(){
Grap *p;
Square a(5);
Cyl b(4,9);
Sphere c(3);
p=&a;
cout<<"正方体表面积="<<p->area()<<endl;
cout<<"正方体体积="<<p->volume()<<endl;
p=&b;
cout<<"圆柱体表面积="<<p->area()<<endl;
cout<<"圆柱体体积="<<p->volume()<<endl;
p=&c;
cout<<"球体表面积="<<p->area()<<endl;
cout<<"球体体积="<<p->volume()<<endl;
return 0;
}
第二个
#include<iostream>
using namespace std;
class Graphical{
protected:
float a;
public:
Graphical(float a):a(a){}
virtual float area()=0;
virtual float volume()=0;
};
class Square: public Graphical{
public:
Square(float a):Graphical(a){};
float area();
float volume();
};
float Square::area(){
return (a*a*a);
}
float Square::volume(){
return (6*a*a);
}
class Cylinder: public Graphical{
private:
float h;
public:
Cylinder(float a,float h):Graphical(a),h(h){};
float area();
float volume();
};
float Cylinder::area(){
return (2*3.14*a*a+2*3.14*a*h);
}
float Cylinder::volume(){
return (3.14*a*a*h);
}
class Sphere: public Graphical{
public:
Sphere(float a):Graphical(a){};
float area();
float volume();
};
float Sphere::area(){
return (4*3.14*a*a);
}
float Sphere::volume(){
return (4.0/3*3.14*a*a*a);
}
int main(){
float a,b,c,h;
Graphical *p;
cout<<"请输入正方形边长"<<endl;
cin>>a;
Square s1(a);
cout<<"请输入圆柱体的底面半径和高"<<endl;
cin>>b>>h;
Cylinder s2(b,h);
cout<<"请输入球体的半径"<<endl;
cin>>c;
Sphere s3(c);
p=&s1;
cout<<"area="<<p->area()<<endl;
cout<<"volume="<<p->area()<<endl;
p=&s2;
cout<<"area="<<p->area()<<endl;
cout<<"volume="<<p->area()<<endl;
p=&s3;
cout<<"area="<<p->area()<<endl;
cout<<"volume="<<p->area()<<endl;
return 0;
}