下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验五继承与派生实验目的1 .学习定义和使用类的继承关系,定义派生类2 .熟悉不同继承方式下对基类成员的访问限制3 .学习利用虚基类解决二义性问题实验要求1 .定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有彳f么问题,把age改为公有成员变量,还会有问题吗?编程尝试.2 .定义一个基类BaseClass,有整型变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况.3 .定义一个车(vehicle)基类,具有Maxspeed、Weight等成员,RunsStop等成员函数
2、,由此派生出自行车(bicycle)类、汽车(motorcar)类.自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNun)等属性.从bicycle和motorcar派生出摩托车(motorbicycle)类,在继承过程中,注意把vehicle设置为虚基类.如果不把vehicle设置为虚基类,会有什么问题?编程尝试.实验内容及实验步骤1 .编写程序定义基类Animal,成员变量age定义为私有的.构造派生类dog,在其成员函数SetAge(intn)中直接对age赋值时,会出现类似以下的错误提示:errorC2248:'age'
3、;:cannotaccessprivatememberdeclaredinclass'Animal'errorC2248:'age':cannotaccessprivatememberdeclaredinclass'Animal'把age改为公有成员变量后重新编译就可以了.程序名:.错误代码:#include<iostream>usingnamespacestd;classAnimalprivate:intage;public:Animal();classdog:publicAnimalpublic:voidSetAge(intn)a
4、ge=n;intmain()(dogone;(23);return0;)运行结果:正确代码:#include<iostream>usingnamespacestd;classAnimal(public:intage;public:Animal(););classdog:publicAnimalpublic:voidSetAge(intn)age=n;););intmain()dogone;(23);return0;)运行结果:2 .编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行
5、情况.程序名:.源代码:#include<iostream>usingnamespacestd;classBaseClassprivate:inta;public:BaseClass()cout<<"基类构造函数调用"<<endl;BaseClass()cout<<"基类析构函数调用"<<endl;classDerivedClass:publicBaseClassprivate:intb;public:DerivedClass()cout<<"派生类构造函数调用"
6、<<endl;DerivedClass()cout<<"派生类析构函数调用"<<endl;intmain()DerivedClassone;return0;运行结果:3 .用debug功能跟踪程序lab7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况.DEBUG4 .编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类.再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类.程序名:.
7、编译成功后,把vehicle设置为非虚基类,再编译一次,此时系统报错,无法编译成功.这是由于假设不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译.源代码:#include<iostream>usingnamespacestd;classVehiclepublic:Vehicle();inta;voidset()cout<<"Vehicle调用"<<endl;classMortorcar:virtualpublicVehiclepublic:Mortorcar();intb;voidset()(cout<<&q
8、uot;Mortorcar调用"<<endl;);classBicycle:virtualpublicVehicle(public:Bicycle();intc;voidset()cout<<"Bicycle调用"<<endl;classMortorcycle:publicMortorcar,publicBicyclepublic:Mortorcycle();intd;voidset()cout<<"Mortorcycle调用"<<endl;intmain()Mortorcycleone;=1;=2;();return0;运行结果:错误情况:思考题1 .如何在已有的类的根底上设计新的类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省左权中学校2025-2026学年高二下学期期中考试英语试题(含答案)
- 2026年武汉九年级开学自测卷(含答案)
- 注册核安全工程师全真模拟试题(完整版)
- 注册会计师《战略》差异化战略案例分析(含解析)
- 资产评估师(珠宝)全真模拟试题(完整版)
- 资产评估师(珠宝)考试真题汇编(完整版)
- DB5115∕T 20-2020 公共厕所分类建设基本要求
- 2026北京化工大学招聘考前冲刺密卷(突破训练)附答案详解
- 2026广东广州花都城投广电城市服务有限公司第一次招聘项目用工人员4人考前冲刺试卷附参考答案详解(综合题)
- 2026年甘肃庆阳宁县部分初中缺员教师选拔38人笔试题库及参考答案详解AB卷
- (正式版)DB65∕T 4755-2024 《模拟高原低压缺氧环境习服训练技术规范》
- 医学实验室工作汇报
- 伤损钢轨管理办法
- 商务会见活动方案
- 中外运2025校招在线笔试题目及答案
- 儿童弹性髓内钉课件
- 2025年家庭医生签约服务职业技能竞赛-全科医师试题
- DBJ-T45-180-2024 《电动自行车停放充电场所建设技术标准》
- DB52T 986-2015 地理标志产品 凯里红酸汤
- 广州市从化区纪委监委公开招考8名合同制纪检监察辅助人员(高频重点提升专题训练)共500题附带答案详解
- 儿童吞咽障碍的康复护理
评论
0/150
提交评论