01./* (程序头部注释开始)
02.* 程序的版权和版本声明部分
03.* Copyright (c) 2011, 烟台大学计算机学院学生
04.* All rights reserved.
05.* 文件名称:renwu.cpp
06.* 作 者:刘文英
07.* 完成日期:2012 年 5 月 14 日
08.* 版 本 号:13.3
09.* 对任务及求解方法的描述部分
10.* 输入描述:略
11.* 问题描述:略
12.* 程序输出:略
13.* 程序头部的注释结束
14.*/
15.#include<iostream>
16.#include<Cmath>
17.using namespace std;
18.const double pi=3.1415926;
19.
20.class Shape //定义抽象基类
21.{
22.public:
23. virtual double areas()=0;
24.};
25.
26.class Circle: public Shape //利用抽象基类定义圆类
27.{
28.public:
29. Circle(double Circle_radius);//构造函数
30. ~Circle(){}
31. double areas();
32.private:
33. double Circle_radius;
34.};
35.
36.class Rectangle: public Shape //利用抽象基类定义矩形类
37.{
38.public:
39. Rectangle(double Rectangle_long,double Rectangle_wide);//构造函数
40. ~Rectangle(){}
41. double areas();
42.private:
43. double Rectangle_long;
44. double Rectangle_wide;
45.};
46.
47.class Triangle: public Shape //利用抽象基类定义三角形类
48.{
49.public:
50. Triangle(double Triangle_bottom,double Triangle_high); //构造函数
51. ~Triangle(){}
52. double areas();
53.private:
54. double Triangle_bottom;
55. double Triangle_high;
56.};
57.
58.Circle::Circle(double Circle_radius)//构造函数
59.{
60. this->Circle_radius=Circle_radius;
61.}
62.
63.double Circle::areas()
64.{
65. return (pi*Circle_radius*Circle_radius);
66.}
67.
68.Rectangle::Rectangle(double Rectangle_long,double Rectangle_wide)
69.{
70. this->Rectangle_long=Rectangle_long;
71. this->Rectangle_wide=Rectangle_wide;
72.}
73.
74.double Rectangle::areas()
75.{
76. return (Rectangle_long*Rectangle_long);
77.}
78.
79.Triangle::Triangle(double Triangle_bottom,double Triangle_high)
80.{
81. this->Triangle_bottom=Triangle_bottom;
82. this->Triangle_high=Triangle_high;
83.}
84.
85.double Triangle::areas()
86.{
87. return (Triangle_bottom*Triangle_high/2);
88.}
89.
90.int main()
91.{
92. Circle c1(12.6),c2(4.9); //建立Circle类对象c1,c2,参数为圆半径
93. Rectangle r1(4.5,8.4),r2(5.0,2.5); //建立Rectangle类对象r1,r2,参数为矩形长、宽
94. Triangle t1(4.5,8.4),t2(3.4,2.8); //建立Triangle类对象t1,t2,参数为三角形底边长与高
95. Shape *pt[6]={&c1,&c2,&r1,&r2,&t1,&t2}; //定义基类指针数组pt,各元素指向一个派生类对象
96. double areas=0.0; //areas为总面积
97. for(int i=0; i<6; i++)
98. {
99. areas=areas+pt[i]->areas();
100. }
101. cout<<"totol of all areas="<<areas<<endl; //输出总面积
102. system("pause");
103. return 0;
104.}
运行结果:totol of all areas=643.099
请按任意键继续. . .