下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度智能农业用地转让协议合同范本3篇
- 四川省雅安市2024-2025学年高三上学期11月“零诊”生物试卷2
- 2024年度城市综合体项目股权变更及合作开发合同3篇
- 2024年度技术转移与成果转化合同4篇
- 2024年度城市道路施工围板租赁及维护服务合同3篇
- 2024年工程竣工验收申请书3篇
- 2024年收益优先投资协议3篇
- 心脏康复的营养处方
- 2024年度投标保证金种类与流程详解合同3篇
- 2024版二手房买卖及翻新工程委托协议3篇
- 江苏开放大学本科财务管理专业060111马克思主义基本原理期末试卷
- 商务英语写作1(山东联盟)智慧树知到期末考试答案章节答案2024年山东管理学院
- 2024年辽宁农业职业技术学院单招职业适应性测试题库审定版
- 遇见朗读者智慧树知到期末考试答案章节答案2024年哈尔滨师范大学
- 中班音乐《小看戏》课件
- 电大财务大数据分析编程作业2
- 葡萄糖醛酸在药物开发中的应用
- 体温表水银泄露的应急预案
- 导尿管相关尿路感染预防与控制技术指南(试行)-解读
- 餐厅、食堂餐饮服务方案(技术标)
- (正式版)JBT 7122-2024 交流真空接触器 基本要求
评论
0/150
提交评论