C++上机实验报告5_第1页
C++上机实验报告5_第2页
C++上机实验报告5_第3页
C++上机实验报告5_第4页
C++上机实验报告5_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+程序实验报告实验五 继承与派生实验目的1. 学习定义和使用类的继承关系,定义派生类2. 熟悉不同继承方式下对基类成员的 访问控制3. 学习利用虚基类解决二义性问题实验要求1. 定义一个基类 Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n )中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程尝试。2. 定义一个基类BaseClass,有整型变量 Number,构造其派生类DerivedClass,观察构造函 数和析构函数的执行情况。3. 定义一个车( vehicle )基类,具有 Maxspeed、Weight

2、 等成员, Run、Stop 等成员函数, 由此派生出 自行车(bicycle )类、汽车(motorcar )类。自行车(bicycle )类有高度(Height) 等属性,汽车(motorcar )类有座位数(SeatNun)等属性。从 bicycle 和motorcar派生出 摩托车(motorbicycle )类,在继承过程中,注意把vehicle 设置为虚基类。如果不把vehicle 设置为虚基类,会有什么问题?编程尝试。实验内容及实验步骤1. 编写程序定义基类 Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数 SetAge ( intn )中直接对age赋值

3、时,会出现类似以下的错误提示:errorC2248 :age: cannot access privatemember declaredin class AnimalerrorC2248 :age: cannot access privatemember declaredin class Animal把 age 改为公有成员变量后重新编译就可以了。程序名:lab7_1.cpp 。错误代码:#includeusing namespace std;class Animalprivate:int age;public:Animal();class dog:public Animalpublic:vo

4、id SetAge(int n)age=n;inf main()宀dog onp0ne.setAge(23x ref urn 0 八#inc-udeAios=reamv using namespace ssc-ass Anima-宀pub-pinf agppub-pAnima-()c-ass dog-bub-icAnima-public:void SetAge(int n)age=n;;int mai n()dog one;on e.SetAge(23); return 0;1i -B i (!hi iFSVFI;D rttMl甲 Vt-n 和q TVI.|TAl:i Kir -W i R77

5、:3吋-口事曾二.: Ji匚3 吨 # ii * 1 n-BPLq-IMVCI PbLrvdriU二运行结果:EIni !押 pipllrrhl-Mlnrv钉唾jj U-lbr-klfa2. 编写程序定义一个基类BaseClass ,构造其派生类 DerivedClass ,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:Iab7_2.cpp 。源代码:#in clude using n amespace std; class BaseClassprivate:int a;public:BaseClass()cout 基类构造函数调用 endl;Base

6、Class()cout 基类析构函数调用 endl;class DerivedClass:public BaseClass private:int b;public:DerivedClass()cout 派生类构造函数调用 endl; ;DerivedClass()cout 派生类析构函数调用 9 E 仃川A# N岔左*翕. Jj|lBX 口* 片“牛也.JJFIteferIIni IIFHlcr i”ri I m 虱!hulk *bi |*Mi忙華斬flMlM用Wl-liKf IF-LTl-FPlGIHiG fidl H USM-liifIh-lUMt IIni II |Mfl lrEnt|

7、L-lfemMULikS WM-i;厂 mrw | |. t *m |嘴 l s .3.用debug功能跟踪程序Iab7_2的执行过程,观察基类和派生类的构造函数和析构函数的 执行情况。DEBUGW祠疋和*if er tiAh- 口刃客 *1) H耳-i: JlhL耳礼丁 誓占無嶼啤宀.ml !dii+:dart b=lbn-lnHKlA|ITlF牡FgllPW 才如fKiwmCIHriwdCl A b ;|*肝申;ItMIT Aummh fLfuEIti罟FiT*1 irruir 1口 qMIff v1 G”!TTS13 V Rll-!: |h0& !3riJM ien-svi血 aMp i

8、h - T| Wp TAi Kr C翕 I口固镯”二忙zl厂-: jih丄1 % - # as 1 u,EX n奚曲dtijHflr啊旳13“MiLiJMm 也质* 負 Hr trXL;FLM4 9MFMIIjRiliiVf! feilMilM k;|mA*LR Jlbn-lnHKlA|nf 主畔缶iifjB 密WKIT耳才耳;1主怖梅MAi帝啊注-S iwmCI4I肝申fl-41 泊 “t 1 Iw. i. iuLTMlh:! 忑r-.JI 可疋恳 Tl-Syl4.编写程序定义一个车 (vehicle )基类,由此派生出自行车 (bicycle )类、汽车(motorcar ) 类,注意把v

9、ehicle 派生为虚基类。再从bicycle 和motorcar派生出摩托车 (motorcycle ) 类,在main()函数中测试这个类。程序名 :lab7_3.cpp 。编译成功后,把 vehicle 设置为非虚基类,再编译一次,此时系统报错,无法编译成功。这是因为若不把 vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。源代码:#in clude using n amespace std;class Vehiclepublic:Vehicle();int a;void set()coutVehicle 调用endl;class Mortorcar:virtual pub

10、lic Vehicle public:Mortorcar();int b;void set()coutMortorcar 调用 endl;class Bicycle:virtual public Vehiclepublic:Bicycle();int c;void set()coutBicycle 调用 endl;class Mortorcycle:public Mortorcar,public Bicycle public: Mortorcycle(); int d; void set() coutMortorcycle 调用 endl;int main()Mortorcycle one; one.a =1;one.b=2; one.set(); return 0; 运行结果:补

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论