下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年气候变化数据的统计分析方法
- 河南省名校大联考2026届高一下数学期末质量跟踪监视模拟试题含解析
- 黄冈师范学院《报刊阅读与翻译》2024-2025学年第二学期期末试卷
- 2026年机械设计中的仿真与测试方法
- 广西中远职业学院《思想政治教育学方法论》2024-2025学年第二学期期末试卷
- 中国矿业大学《合唱与指挥2》2024-2025学年第二学期期末试卷
- 民办四川天一学院《建筑工程CAD》2024-2025学年第二学期期末试卷
- 长沙航空职业技术学院《公共政策分析(含申论)》2024-2025学年第二学期期末试卷
- 重庆轻工职业学院《审计B》2024-2025学年第二学期期末试卷
- 2026年微型机械系统的设计与挑战
- 北航机械方案说明书齿轮减速器
- 中医基础理论试题及答案
- 机动车维修竣工出厂合格证
- GB/T 9437-1988耐热铸铁件
- GB/T 25085.3-2020道路车辆汽车电缆第3部分:交流30 V或直流60 V单芯铜导体电缆的尺寸和要求
- GB/T 18998.3-2003工业用氯化聚氯乙烯(PVC-C)管道系统第3部分:管件
- 高校辅导员应聘考试真题及答案
- 地理课堂教学技能课件
- 电气设备预防性试验合同范本-
- 赣美版八年级美术下册全册课件汇总
- 高处作业安全技术交底-
评论
0/150
提交评论