编写一个程序,声明抽象基类Shape,由它派生出三个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据表在定义对象时给定。
#include <iostream>
using namespace std;
class Shape
{
public:
virtual double area( )const=0;
};
class Circle:public Shape
{
public:
Circle(double r):radius(r){}
virtual double area()const{return 3.14159*radius*radius;}
protected:
double radius;
};
class Rectangle:public Shape
{
public:
Rectangle(double w,double h):width(w),height(h){ }
virtual double area() const {return width*height;}
protected:
double width,height;
};
class Triangle:public Shape
{
public:
Triangle(double w,double h):width(w),height(h){ }
virtual double area() const{return 0.5*width*height;}
protected:
double width,height;
};
void printArea(const Shape &s)
{cout<<s.area()<<endl;}
int main()
{
Circle circle(12.6);
cout<<"area of circle =";
printArea(circle);
Rectangle rectangle(4.5,8.4);
cout<<"area of rectangle =";
printArea(rectangle);
Triangle triangle(4.5,8.4);
cout<<"area of triangle =";
printArea(triangle);
return 0;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7af32c529a73819f77b9697b1dba8eab.png)