#include <iostream>
#include <cmath>
using namespace std;
class Graphical
{
protected:
float perm;
float aera;
public:
Graphical(){cout<<"Graphical的无参构造函数"<<endl;}
Graphical(float p,float a):perm(p),aera(a){cout<<"Graphical的有参构造函数"<<endl;}
virtual ~Graphical() {cout<<"Graphical的析构函数"<<endl;}
virtual void show() //虚函数
{
cout<<"perm="<<perm<<endl;
cout<<"area="<<aera<<endl;
}
};
//矩形类
class Rectangle:public Graphical
{
private:
float length;
float wide;
public:
Rectangle(){cout<<"Rectangle的无参构造函数"<<endl;}
Rectangle(float p,float a,float l,float w):Graphical(p,a),length(l),wide(w){cout<<"Rectangle无参构造函数"<<endl;}
~Rectangle(){cout<<"Rectangle的析构函数"<<endl;}
void show() override
{
perm=2*(length+wide);
aera=length*wide;
cout<<"矩形perm="<<perm<<endl;
cout<<"矩形aera="<<aera<<endl;
}
};
//圆类
class Circle:public Graphical
{
private:
float radius;
public:
Circle(){cout<<"Circle无参构造函数"<<endl;}
Circle(float p,float a,float r):Graphical(p,a),radius(r){cout<<"Circle有参构造函数"<<endl;}
~Circle(){cout<<"Circle的析构函数"<<endl;}
void show() override
{
perm=2*3.14159*radius;
aera=3.14159*radius*radius;
cout<<"圆perm="<<perm<<endl;
cout<<"圆aera="<<aera<<endl;
}
};
//三角形类
class Triangle:public Graphical
{
private:
float a,b,c;
public:
Triangle(){cout<<"Trigon无参构造函数"<<endl;}
Triangle(float p,float a,float x,float y,float z):Graphical(p,a),a(x),b(y),c(z){cout<<"Trigon有参构造函数"<<endl;}
~Triangle(){cout<<"Trigon的析构函数"<<endl;}
void show() override
{
float p=(a+b+c)/2;
perm=a+b+c;
aera=sqrt(p*(p-a)*(p-b)*(p-c));
cout<<"三角形perm="<<perm<<endl;
cout<<"三角形aera="<<aera<<endl;
}
};
// 全局函数,输出图形的周长和面积
void display(Graphical &rf)
{
cout<<"display"<<endl;
rf.show();
return;
}
// 主函数
int main()
{
Rectangle r1(2.5,3.5,1.0,2.0);
display(r1);
Circle c1(2.5,3.5,5.0);
display(c1);
Triangle t1(2.5,3.5,3.0,4.0,5.0);
display(t1);
return 0;
}
2024年9.5作业
最新推荐文章于 2024-09-11 11:31:11 发布