#include<iostream>
#include <cmath>
using namespace std;
class Graphical
{
protected:
float pem;
float area;
public:
///无参//
Graphical(){//cout<<"Graphical的无参构造函数"<<endl;
}
/有参///
Graphical(float a,float b):pem(a),area(b){
// cout<<"Graphical的有参构造函数"<<endl;
};
/析构函数
~Graphical(){
// cout<<"Graphical的析构函数"<<endl;
};
virtual void show()
{
cout<<"图形的show"<<endl;
}
};
class Rectangle: public Graphical
{
private:
float length;
float wide;
public:
///无参//
Rectangle(){
// cout<<"Rectangle的无参构造函数"<<endl;
};
/有参///
Rectangle(float a,float b):length(a),wide(b){
// cout<<"Rectangle的有参构造函数"<<endl;
};
/析构函数
~Rectangle(){
// cout<<"Rectangle的析构函数"<<endl;
};
///show
void show()
{
pem = (length + wide) *2;
area = length * wide;
cout<<"矩形周长:"<<pem<<"矩形面积:"<<area<<endl;
}
};
class Circle: public Graphical
{
private:
float radius;
public:
///无参//
Circle(){
// cout<<"Party的无参构造函数"<<endl;
};
/有参///
Circle(float a):radius(a){
//cout<<"Circle的有参构造函数"<<endl;
};
/析构函数
~Circle(){
// cout<<"Circle的析构函数"<<endl;
}
///show
void show()
{
area = 3.14 * radius*radius;
pem = 2*3.14 * radius;
cout<<"圆形的周长:"<<pem<<"圆形的面积:"<<area<<endl;
}
};
class sanjiaoxing:public Graphical
{
private:
int a;
int b;
int c;
float p = (a+b+c)/2;
public:
///无参//
sanjiaoxing(){
// cout<<"sanjiaoxing的无参构造函数"<<endl;
};
/有参///
sanjiaoxing(int a,int b,int c):a(a),b(b),c(c){
//cout<<"sanjiaoxing的有参构造函数"<<endl;
};
/析构函数
~sanjiaoxing(){
// cout<<"sanjiaoxing的析构函数"<<endl;
}
void show()
{
pem = (a+b+c);
area = sqrt(p*(p-a)*(p-b)*(p-c));
cout<<"三角形的周长:"<<pem<<"三角形的面积:"<<area<<endl;
}
};
void func(Graphical &r)
{
cout<<"func的show"<<endl;
r.show();
}
int main(int argc, const char *argv[])
{
Rectangle r(3,4);
func(r);
cout<<"************"<<endl;
Circle c(3);
func(c);
cout<<"************"<<endl;
sanjiaoxing s(3,4,5);
func(s);
return 0;
}
运行结果: