/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称:score.cpp
* 作 者: 刘元龙
* 完成日期: 2013 年5 月 31 日
* 版本号: v1.0
* 输入描述:
* 问题描述:
* 输出:
*/
#include<iostream>
using namespace std;
//空基类
class shape
{
public:
virtual double area()
{
cout<<"没和我说是什么形状,我怎么计算面积:";
}
};
//圆类
class circle:public shape
{
public:
circle(double);
double area();
protected:
double r;
};
circle::circle(double R)
{
r=R;
}
double circle::area()
{
double s;
s=3.14*r*r;
return s;
}
//矩形类
class rectangle:public shape
{
public:
rectangle(double,double);
double area();
protected:
double x,y;
};
rectangle::rectangle(double X,double Y)
{
x=X;
y=Y;
}
double rectangle::area()
{
double s;
s=x*y;
return s;
}
//三角形类
class triangle:public shape
{
public:
triangle(double,double);
double area();
protected:
double a,b,c;
};
triangle::triangle(double X,double Y)
{
a=X;
b=Y;
}
double triangle::area()
{
double s;
s=(a*b)/2;
return s;
}
int main()
{
circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径
rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,参数为矩形长、宽
triangle t1(4.5,8.4),t2(3.4,2.8); //建立Triangle类对象t1,t2,参数为三角形底边长与高
shape *pt[6]= {&c1,&c2,&r1,&r2,&t1,&t2}; //定义基类指针数组pt,使它每一个元素指向一个派生类对象
double areas=0.0; //areas为总面积
for(int i=0; i<6; i++)
{
areas=areas + pt[i]->area();
}
cout<<"totol of all areas="<<areas<<endl; //输出总面积
return 0;
}
运行结果: