c+±-定义图形抽象类。完成圆形、三角形、矩形的面积和周长计算
/*===============================================
* 文件名称:abstract.cpp
* 创 建 者:
* 创建日期:2022年09月21日
* 描 述:
================================================*/
#include <iostream>
using namespace std;
class Shape//基类
{
public:
virtual float area()=0;//面积纯虚函数
virtual float perimeter()=0;//周长纯虚函数
};
class Circle:public Shape//继承基类---圆形
{
private:
float radius;//半径
public:
Circle(int r=0):radius(r)//构造函数初始化对象半径的的值
{
cout<<__func__<<":"<<__LINE__<<endl;//打印函数名和行数
}
~Circle()//析构函数数据资源回收
{
cout<<__func__<<":"<<__LINE__<<endl;//打印函数名和行数
}
virtual float area()//圆的面积函数--重写基类纯虚函数
{
return 3.14*radius*radius;//pi*r^2
}
virtual float perimeter()//圆的周长函数--重写基类纯虚函数
{
return 2*3.14*radius;//2*pi*r
}
};
class Rectangle:public Shape//继承基类--矩形
{
private:
float hight,wide;//长宽
public:
Rectangle(float h=0,float w=0):hight(h),wide(w)//构造函数初始化对象长和宽的值
{
cout<<__func__<<":"<<__LINE__<<endl;//打印函数名行数
}
~Rectangle()//析构函数数据资源回收
{
cout<<__func__<<":"<<__LINE__<<endl;//打印函数名和行数
}
virtual float area()//矩形面积----重写基类纯虚函数
{
return hight*wide;
}
virtual float perimeter()//矩形周长--重写基类纯虚函数
{
return (hight+wide)*2;
}
};
class Triangle:public Shape//继承基类---三角形
{
private://定义边长和高-等边三角形
float side1;
float side2;
float side3;
float high;
public:
Triangle(float s1=0,float s2=0,float s3=0,float h=0):side1(s1),side2(s2),side3(s3),high(h)//构造函数初始化对象的值
{
cout<<__func__<<":"<<__LINE__<<endl;
}
~Triangle()//三角形析构函数
{
cout<<__func__<<":"<<__LINE__<<endl;
}
virtual float area()//三角形面积--重写基类纯虚函数
{
return (side1*high)/2 ;
}
virtual float perimeter()//三角形周长--重写基类纯虚函数
{
return side1+side2+side3;
}
};
//任意形状都可用的面积公式
void showarea(Shape &a)
{
cout<<"面积:"<<a.area()<<endl;
}
//任意形状都可以用的周长公式
void showperimeter(Shape &p)
{
cout<<"周长:"<<p.perimeter()<<endl;
}
int main()
{
//圆
Circle c(2);
cout<<"圆的";
showarea(c);
cout<<"圆的";
showperimeter(c);
//矩形
Rectangle r(19,10);
cout<<"矩形的";
showarea( r);
cout<<"矩形的";
showperimeter( r);
//三角形
Triangle t(5,5,5,2.5);
cout<<"三角形的";
showarea(t);
cout<<"三角形的";
showperimeter(t);
return 0;
}
运行结果: