




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一实验目的及要求1进一步熟悉类的设计、运用继承与派生机制设计派生类,合理设置数据成员和成员函数。2掌握通过继承、虚函数、基类的指针或引用实现动态多态性的方法。3理解并掌握具有纯虚函数的抽象类的作用,在各派生类中重新定义各纯虚函数的方法,以及此时实现的动态多态性。二实验内容在自己的文件夹下建立一个名为exp5的工程,在该工程中做如下操作:定义一个抽象类容器类,其中定义了若干纯虚函数,实现求表面积、体积、输出等功能。由此抽象类派生出正方体、球体和圆柱体等多个派生类,根据需要定义自己的成员变量,在各个派生类中重新定义各纯虚函数,实现各自类中相应功能,各个类成员的初始化均由本类构造函数实现。(1)在主函数中,定义容器类的指针和各个派生类的对象,使指针指向不同对象处调用相同的函数能执行不同的函数代码,从而实现动态多态性。(2)定义一个顶层函数void TopPrint(Container &r);使得主函数中调用该函数时,根据实在参数所有的类自动调用对应类的输出函数。(3)主函数中定义一个Container类对象,观察编译时的错误信息,从而得出什么结论三实验程序及运行结果#include using namespace std;class Basepublic:virtual void f() cout 调用Base:f() endl; ;class Derived: public Basepublic:void f() cout 调用Derived:f() f();/ 调用函数f()system(PAUSE); return 0; 2.#include using namespace std;/class Basepublic:virtual void Show() const cout 调用Base:Show() endl; / 虚函数;class Derived: public Basepublic:void Show() const cout 调用Derived:Show() endl; ;void Refers(const Base &obj)/ 基类引用obj.Show();/ 调用函数Show()int main(void)Base obj1;Derived obj2;/ 定义对象Refers(obj1);/ 调用函数Refers()Refers(obj2);system(PAUSE); return 0; 3.#include using namespace std;/class Baseprivate:int m;public:Base(int a): m(a) virtual void Show() const cout m endl; / 虚函数;class Derived: public Baseprivate:int n;public:Derived(int a, int b): Base(a), n(a) / 构造函数void Show() const cout n Show();p = &obj2;p-Show();p-Base:Show();system(PAUSE); return 0; 4.#include using namespace std;class Apublic:virtual void Show() const cout 基类A endl; ;class B: public Apublic:void Show() const cout 派生类B Show();system(PAUSE);return 0;5.#include using namespace std;const double PI = 3.1415926;class Shapepublic:virtual void Show() const = 0;static double sum;class Circle: public Shapeprivate:double radius;public:Circle(double r): radius(r) sum += PI * radius * radius; void Show() const cout 圆形: endl;cout 半径: radius endl;cout 面积: PI * radius * radius endl;class Rectangle: public Shapeprivate:double height;double width;public:Rectangle(double h, double w): height(h), width(w) sum += height * width; void Show() const cout 矩形: endl;cout 高: height endl;cout 宽: width endl;cout 面积: height * width endl;double Shape:sum = 0;int main(void)char flag = Y;Shape *p;while (toupper(flag) = Y)cout select;switch (select)case 1:double r;cout r;p = new Circle(r);p-Show();delete p;break;case 2:double h, w;cout h;cout w;p = new Rectangle(h, w);p-Show();/ 显示相关信息delete p;/ 释放存储空间break;default:/ 其它情况, 表示选择有误cout 选择有误! endl;break;cout endl flag;cout 总面积: Shape:sum endl;system(PAUSE); return 0; 6.#include using namespace std;const double PI = 3.1415926;const int NUM = 10;class Shapepublic:virtual void ShowArea() const = 0;static double sum;class Circle: public Shapeprivate:double radius;public:Circle(double r): radius(r) sum += PI * radius * radius; void ShowArea() const cout 圆面积: PI * radius * radius endl; ;class Rectangle: public Shapeprivate:double height;double width;public:Rectangle(double h, double w): height(h), width(w) sum += height * width; void ShowArea() const cout 矩形面积: height * width endl; ;class Square: public Shapeprivate:double length;public:Square(double a): length(a) sum += length * length; void ShowArea() const cout 正方形面积: length * length endl; ;double Shape:sum = 0;int main(void)Shape *shapeNUM;int count = 0;while (count NUM)cout select;if (select = 4) break;switch (select)case 1:double r;cout r;shapecount = new Circle(r);shapecount-ShowArea();count+;break;case 2:double h, w;cout h;cout w;shapecount = new Rectangle(h, w);shapecount-ShowArea();count+;break;case 3:double a;cout a;shapecount = new Square(a);shapecount-ShowArea();count+;break;default:cout 选
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校组织员考试题库及答案
- 教育培训机构年度技术升级计划
- 学分减分考试题库及答案
- 2025-2030中国空气净化材料技术创新与住宅市场需求匹配度研究报告
- 2025年医疗风险处置试题及答案
- 2025-2030中国离心式冷冻机组泵冷链物流基础设施建设高潮市场研判报告
- 杏坛期末考试题及答案解析
- 2025-2030中国生态水泥材料碳排放控制技术与政策合规性研究报告
- 《道德与法治》知识点掌握培训心得体会
- 电子商务评价管理系统创新创业项目商业计划书
- GB/T 24708-2009湿地分类
- GB/T 18847-2002聚氯乙烯覆膜金属板
- 广州越秀区卫生局事业单位考试真题
- 基因工程制药-课件
- 基础教育改革与发展中的热点问题课件
- 流动式起重机械检验记录表
- 蛛网膜下腔出血的个案护理
- 大学信息与网络安全保密管理办法
- 音乐《上学歌》课件
- 绿色校园创建资料
- 污水处理池 (有限空间)作业安全告知牌及警示标志
评论
0/150
提交评论