

#include<iostream>
#include<iomanip>
#include<algorithm>
#include<string.h>
#include<vector>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
class Graphic{
public:
double x;
public:
Graphic(double a)
{
x=a;
}
virtual void show()
{
}
virtual ~Graphic(){
}
};
class Shape:public Graphic{
public:
Shape(double a):Graphic(a)
{
}
virtual void show()
{
}
virtual ~Shape(){
}
};
class Solid:public Graphic{
public:
Solid(double a):Graphic(a)
{
}
virtual void show()
{
}
virtual ~Solid(){
}
};
class Square:public Shape{
public:
Square(double a):Shape(a)
{
}
void show()
{
cout<<"Square, side:"<<x<<", area:"<<x*x<<"."<<endl;
}
~Square()
{
}
};
class Circle:public Shape{
public:
Circle(double a):Shape(a)
{
}
void show()
{
cout<<"Circle, radius:"<<x<<", area:"<<3.14*x*x<<"."<<endl;
}
~Circle()
{
}
};
class Cube:public Solid{
public:
Cube(double a):Solid(a)
{
}
void show()
{
cout<<"Cube, side:"<<x<<", area:"<<6*x*x<<", volume:"<<x*x*x<<"."<<endl;
}
~Cube()
{
}
};
class Ball:public Solid{
public:
Ball(double a):Solid(a)
{
}
void show()
{
cout<<"Ball, radius:"<<x<<", area:"<<4*3.14*x*x<<", volume:"<<4/3*3.14*x*x*x<<"."<<endl;
}
~Ball()
{
}
};
int main()
{
Graphic *gp[100];
int cases;
cin>>cases;
for(int i = 0; i < cases; ++i)
{
string types;
double value;
cin>>types>>value;
if(types == "square")
gp[i] = new Square(value);
if(types == "cube")
gp[i] = new Cube(value);
if(types == "ball")
gp[i] = new Ball(value);
if(types == "circle")
gp[i] = new Circle(value);
}
for(int i = 0; i < cases; ++i)
{
gp[i]->show();
delete gp[i];
}
}
这篇博客展示了面向对象编程的概念,通过创建`Graphic`、`Shape`和`Solid`基类,以及具体图形如`Square`、`Circle`、`Cube`和`Ball`的派生类,来演示如何进行类的继承和多态性操作。程序读取用户输入的图形类型和尺寸,然后实例化并显示相应图形的面积或体积信息。
5704





