《第十三周实验报告任务3》
来源:互联网 发布:东莞金域名苑名林居 编辑:程序博客网 时间:2024/04/27 22:36
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 《抽象基类的应用》
* 作 者: 刘江波
* 完成日期: 2012 年 5 月 15 日
* 版 本 号: v.05152
* 对任务及求解方法的描述部分
* 问题描述:
写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形)。用如下的mian()函数,求出定义的几个几何体的面积和。
* 程序头部的注释结束
*/
#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; }
总结:
1、使用虚函数提高了程序的可扩充性
2、使用基类指针来控制有关对象,不管对象在继承层次的那一层,都可以用基类指针指向它。
- 第十三周实验报告任务3
- 《第十三周实验报告任务3》
- 第十三周实验报告 任务二(3)
- 第十三周实验报告 任务二(3)改
- 第十三周实验报告(任务一)
- 第十三周实验报告(任务二)
- 第十三周实验报告(任务三)
- 《第十三周实验报告任务1》
- 第十三周实验报告 任务一
- 第十三周实验报告 任务三
- 第十三周实验报告 任务四
- 第十三周实验报告任务2
- 第十三周实验报告任务4
- 第十三周实验报告任务1
- 《第十三周实验报告任务2》
- 《第十三周实验报告任务4》
- 第十三周实验报告3
- 第十三周实验报告3
- 原子操作基本内容计算机操作系统进程
- vim 分割窗口[转]
- 枚举类
- mysql支持调用begin end来执行代码块吗?
- Newsvendor model
- 《第十三周实验报告任务3》
- Spring事务传播性与隔离级别
- 设置Cookie的生命周期
- hdu 1543 Paint the Wall
- pthread-生产者消费者问题【采用互斥量和条件变量】
- 对IT的困惑,对人生的迷茫,看看您是否有共鸣?
- Linux initrd
- 黑马程序员 ADO.net
- C++第十三周【任务1】开车学习虚函数、多态性和抽象类的应用