下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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学年)
- 八年级语文上册第六单元第课勉学教案沪教版五四制(2025-2026学年)
- 负载均衡协议书
- 普法基地协议书
- 收到资金协议书
- 替代起诉协议书
- 订制品协议合同
- 《民航法律法规》课件-7-2 民用航空器不安全事件的处置
- 2024秋期国家开放大学《西方行政学说》一平台在线形考(任务一至四)试题及答案
- 2024秋国家开放大学《交通工程》形考任务1-4答案
- 创新设计前沿智慧树知到期末考试答案章节答案2024年浙江大学
- 股东合作合同模板
- 中国书法艺术智慧树知到期末考试答案章节答案2024年中国美术学院
- 采购灭火器施工方案
- 小学生古诗词大赛备考题库(300题)
- DB14-T 2644-2023旅游气候舒适度等级划分与评价方法
- 药店食品安全管理制度目录
- GB/T 25085.3-2020道路车辆汽车电缆第3部分:交流30 V或直流60 V单芯铜导体电缆的尺寸和要求
评论
0/150
提交评论