



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年春季中国石油高校毕业生招聘(河南有岗)模拟试卷附答案详解(模拟题)
- 唐山市人民医院肛肠科主治医师晋升考核
- 2025广西桂林医科大学第一附属医院招聘普通合同工4人考前自测高频考点模拟试题完整参考答案详解
- 2025儿童医院麻醉药品管理考核
- 2025湖北荆州区校园招聘中小学教师49人考前自测高频考点模拟试题及答案详解1套
- 张家口市中医院神经科健康教育能力考核
- 重庆市人民医院内脏动脉瘤腔内治疗技术考核
- 2025江西省财通供应链金融集团有限公司劳务派遣制人员招聘8人考前自测高频考点模拟试题及答案详解(考点梳理)
- 张家口市中医院酶联免疫技术专项考核
- 2025广东清远市清城区招聘事业单位人才专项编制人员11人考前自测高频考点模拟试题附答案详解
- 练习使用显微镜 全国公开课一等奖
- 2023年高考地理(上海卷)-含答案
- 比重式精选机的使用与维护
- GB/T 39554.1-2020全国一体化政务服务平台政务服务事项基本目录及实施清单第1部分:编码要求
- GB/T 2942-2009硫化橡胶与纤维帘线静态粘合强度的测定H抽出法
- 电梯设计系统
- 细胞培养技术培训课件
- 劳动保障协理员考试复习资料
- DB3301T 0286-2019 城市绿地养护管理质量标准
- 轴类零件工艺工序卡片
- 道德与法治-六年级(上册)-《知法守法 依法维权》教学课件
评论
0/150
提交评论