第十三周项目三-形状类族中的纯虚函数
2016-06-01 17:52
176 查看
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月1日 *版 本 号:v1.0 * *问题描述:写一个程序,定义抽象基类的Shape,由它派生出3个派生类,Circle(圆形)、Rectangie(矩形)、Triangle(三角形)。用如下的main()函数,求出定义的几个几何体的面积和 */ #include <iostream> using namespace std; class Shape //定义抽象基类Shape { public: virtual double area() const =0; //纯虚函数,写const是因为本函数只求值不改变数据成员,故用const保护一下,与虚函数无关 }; class Circle:public Shape //定义Circle类 { public: Circle(double r):radius(r) {} //结构函数 virtual double area() const //基类中的同名纯虚函数用了const,这儿也必须写,以示同一函数,否则认为没有实现纯虚函数,仍为抽象类,不能定义对象——类的实例 { return 3.14159*radius*radius; //定义虚函数 }; protected: double radius; //半径 }; class Rectangle:public Shape //定义Rectangle类 { public: Rectangle(double w,double h):width(w),height(h) {} //结构函数 virtual double area() const //基类中的同名纯虚函数用了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; //宽与高 }; 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; }
运行结果:
相关文章推荐
- js 计算时间
- C# []、List、Array、ArrayList 区别及应用
- leetcode Construct Binary Tree from Preorder and Inorder Traversal
- 最简单的antd的index.jsx的路由配置
- ios学习--网络流量统计
- Activity生命周期管理~ 暂停和继续Activity
- hdu1150(二分图最小顶点覆盖)
- java日期工具类
- WPS是个坑
- 编译原理 - 在 Windows 平台下使用 Flex 和 Bison
- 添加当前程序到设备管理列表里
- 筋斗云教程(一): 运行筋斗云应用
- Node.js(1)
- IO流—File
- 各种排序算法的分析及其Java代码的实现
- oracle设置时间字段自动获取
- Eclipse中的制表符改为四个空格
- Java/Android中的函数调用&回调函数&自定义回调函数
- 《深入理解Android 卷III》第五章 深入理解Android输入系统
- iOS基础——浅谈个人对协议、代理的理解