64,692
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include <iostream>
using namespace std;
class Shape //定义抽象类Shape
{
protected:
double x,y,z;
public:
void set(double i=0,double j=0,double k=0)
{
x=i;
y=j;
z=k;
}
virtual void area()=0; //声明纯虚函数area,用于求各种图形的表面积
virtual void volume()=0; //声明纯虚函数volume,用于求各种图形的体积
};
class Cylinder: public Shape //定义圆柱体类Cylinder
{
public:
void area() //定义纯虚函数area
{
cout<<"圆柱体的表面积是:"<<3.14*x*x*(2+z)<<endl;
}
void volume()
{
cout<<"圆柱体的体积是:"<<3.14*x*x*z<<endl;
}
};
class Globe: public Shape //定义球体类Globe
{
public:
void area() //定义纯虚函数area
{
cout<<"球体的表面积是:"<<4*3.14*x*x<<endl;
}
void volume()
{
cout<<"球体的体积的:"<<4/3*3.14*x*x*x<<endl;
}
};//少了个大括号
class Cube: public Shape //定义正方体类Cube
{
public:
void area() //定义纯虚函数area
{
cout<<"正方体的表面积是:"<<6*x*x<<endl;
}
void volume()
{
cout<<"正方体的体积是:"<<x*x*x<<endl;
}
};
class Cuboid: public Shape //定义长方体类Cuboid
{
public:
void area() //定义纯虚函数area
{
cout<<"长方体的表面积的:"<<2*(x*y+x*z+y*z)<<endl;
}
void volume()
{
cout<<"长方体的体积是:"<<x*y*z<<endl;
}
};
int main(int argc, char* argv[])
{
Shape *p; //定义指向抽象类的指针
Cylinder c;
Globe g;
Cube u;
Cuboid b;
p=&c; //抽象类的指针指向派生类对象
p->set(5,10);
p->area();
p->volume();
p=&g; //抽象类的指针指向派生类对象
p->set(5);
p->area();
p->volume();
p=&u; //抽象类的指针指向派生类对象
p->set(5);
p->area();
p->volume();
p=&b; //抽象类的指针指向派生类对象
p->set(5,10,15);
p->area();
p->volume();
return 0;
}