网站大量收购独家精品文档,联系QQ:2885784924

实验3 继承与派生要点.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验3 继承与派生要点

重庆交通大学信息科学与工程学院 上机实验报告 班 级: 计科4班 姓名 学号: 伍明力 631507020408 实验项目名称: 实验三、继承与派生 实验项目性质: 验证性与设计性 实验所属课程: 《面向对象程序设计》 实验室(中心): B01407 指 导 教 师 : 王桂平 实验完成时间: 2016 年 5 月 1 日 一、实验(实训)概述: 【实验目的】 1. 学习定义和使用类的继承关系,定义派生类; 2. 熟悉不同继承方式下对基类成员的访问控制; 3. 掌握类的完整设计与测试。 【实验要求】 1. 根据实验项目要求编写程序或回答问题; 2. 所提交的程序都必须经过测试,验证是正确的; 3. 认真记录实验过程及结果,回答实验报告中的问题。 【基本原理】 详见教材 【实施环境】(使用的材料、设备、软件) Visual C++ 6.0 二、实验(实训)内容: 实验任务一 用跟踪程序流程,回答问题 第1题 【考查知识点】 基类与派生类的转换 【项目内容】 已经有如下正确的程序了,请为该程序建立控制台工程,然后按照要求进行测试和调试。 #include iostream.h class B //基类 { protected: int x, y; public: B(int a=10,int b=20):x(a),y(b){ } void calc() //基类有calc() { cout x+y= x+y endl; } }; class D: public B //公有派生类 { protected: int z; public: D(int a=1,int b=2,int c=3):B(a,b),z(c){} void calc( ) //派生类也有calc() { cout z+x+y= z+x+y endl; } }; void fn(B t) //形参为基类的引用 { t.calc(); //只调用基类的calc(),不会调用派生类的calc() } int main() { B Bo, *pb; D Do; coutcall Bo.calc():; Bo.calc(); coutcall Do.calc():; Do.calc(); coutcall Bo.calc():; fn(Bo); coutcall Do.calc():; fn(Do); pb=Bo; //基类对象的指针指向基类对象 pb-calc(); pb=Do; //基类对象的指针指向派生类对象 pb-calc(); return 0; } 【方案设计】 无 【实验(实训)过程】(步骤、记录、数据、程序等) 请按照如下步骤对程序进行调试,并回答相关问题。 (1) 在主函数的第一条cout语句处设置一个断点,进行调试。如下图所示。进入到调试状态后,在watch窗口中观察下列表达式的值。 BoDo:sizeof(Bo):sizeof(Do): (2) 点开Bo和Do的树状结构,观察其成员。Do对象是否包含了从基类中继承过来的数据成员? 答 (3) 继续单步运行,当运行到语句fn(Bo);时,点击step into进入到fn函数进行调试,在fn函数中运行时,在watch窗口中记录引用形参的地址。 t: 1) 请问在定义函数对形参t声明时的“”符号跟在watch窗口中上述表达式中的“”符号意义是否相同? 答: 2) 引用形参的地址跟上面记录的地址Bo、Do中的哪一个是一样的。(结合引用的含义进行理解) 答: (4) 继续单步运行,当运行到语句fn(Do);时,点击step into进入到fn函数进行调试,在fn函数中运行时,在watch窗口中记录引用形参的地址。 t: 1) 引用形参的地址跟上面记录的地址Bo、Do中的哪一个是一样的。(结合引用的含义进行理解) 答: 2) 通过调试过程中的输出判断函数fn(Do)在执行过程中调用的是基类的calc()函数还是派生类的calc()函数? 答: (5) 继续单步运行,观察两条pb-calc();语句的输出,其中第2条pb-calc();语句调用的是基类的calc()函数还是派生类的calc()函数? 答: (6) 如果希望fn(Do);和第2条pb-calc();语

文档评论(0)

441113422 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档