- * 程序的版权和版本声明部分
- * Copyright (c) 2011, 烟台大学计算机学院学生
- * All rights reserved.
- * 文件名称:
- * 作者:李君凯
- * 完成日期: 2012年 5月 18日
- * 版本号:
- *对任务及求解方法的描述部分
<span style="font-size:16px;">#include<iostream> using namespace std; const double PI = 3.14159; class Shape { public: virtual double area() const =0; //定义纯虚函数,供派生类使用 }; class Circle: public Shape { public: Circle(double radius); virtual double area() const; protected: double radius; //半径 }; class Rectangle: public Shape { public: Rectangle(double length, double width); virtual double area() const; protected: double length; double width; }; class Triangle: public Shape { public: Triangle(double base, double height); virtual double area() const; protected: double base; double height; }; Circle::Circle(double radius) { this->radius = radius; } double Circle::area() const { return PI * radius * radius; } Rectangle::Rectangle(double length, double width) { this->length = length; this->width = width; } double Rectangle::area() const { return length * width; } Triangle::Triangle(double base, double height) { this->base = base; this->height = height; } double Triangle::area() const { return 0.5 * base * height; } 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; //输出总面积 system("pause"); return 0; } </span>
第十三周实验报告三
最新推荐文章于 2022-02-25 19:38:17 发布