编写程序,定义抽象基类shape,由它派生出3个基类:circle(圆形)rectangle(矩形)和triangle(三角形),用一个函数printarea分别输出以上图形的面积,3个图形在数据在定义对象时给定。
#include<iostream.h>
#include<math.h>
const double PI=3.14;
class shape//定义抽象基类
{
public:
virtualvoid printarea()=0;//虚函数
};
class circle:public shape
{
private:
floatr;
public:
circle(float r){this->r=r;}//构造函数
virtual void printarea();//虚函数
};
class rectangle:public shape
{
private:
floatl,w;
public:
rectangle(floatl,float w){this->l=l;this->w=w;}//构造函数
virtualvoid printarea();//虚函数
};
class triangle:public shape
{
private:
floata,b,c;
public:
triangle(floati,float j,float k){a=i;b=j;c=k;}
virtualvoid printarea();//虚函数
};
void circle::printarea()
{
cout<<PI*r*r<<endl;
}
void rectangle::printarea()
{
cout<<l*w<<endl;
}
void triangle::printarea()
{
float s=(a+b+c)/2;
cout<<sqrt(s*(s-a)*(s-b)*(s-c));
}
void main()
{
circle c(3);
rectangle r(3,4);
triangle t(5,6,7);
shape* ps;
cout<<"area of circle:";
ps=&c;
ps->printarea();
cout<<"area of printarea:";
ps=&r;
ps->printarea();
cout<<"area of triangle:";
ps=&t;
ps->printarea();
cout<<endl;
}