ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:321.95KB ,
资源ID:22996608      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22996608.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++上机实验报告5.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++上机实验报告5.docx

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

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

3、or C2248 : age : cannot access private member declared in class Animal error C2248 : age : cannot access private member declared in class Animal 把age改为公有成员变量后重新编译就可以了。程序名:lab7_1.cpp。 错误代码:#includeusing namespace std;class Animalprivate: int age;public: Animal() ;class dog:public Animalpublic: void S

4、etAge(int n) age=n; ;int main() dog one; one.SetAge(23); return 0;运行结果:正确代码:#includeusing namespace std;class Animalpublic: int age;public: Animal() ;class dog:public Animalpublic: void SetAge(int n) age=n; ;int main() dog one; one.SetAge(23); return 0;运行结果:2.编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在

5、构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7_2.cpp。 源代码:#includeusing namespace std;class BaseClassprivate: int a;public: BaseClass() cout基类构造函数调用endl; ; BaseClass() cout基类析构函数调用endl; ;class DerivedClass:public BaseClassprivate: int b;public: DerivedClass() cout派生类构造函数调用endl; ; DerivedClass() cou

6、t派生类析构函数调用endl; ;int main() DerivedClass one; return 0;运行结果:3.用debug功能跟踪程序lab7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。 DEBUG:4.编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名:lab7_3.cpp。 编译成功后,把vehicle设置为非虚基类,再编译一次,此时系统报错,无法编译成

7、功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。源代码:#includeusing namespace std;class Vehiclepublic: Vehicle(); int a; void set() coutVehicle调用endl; ;class Mortorcar:virtual public Vehiclepublic: Mortorcar(); int b; void set() coutMortorcar调用endl; ;class Bicycle:virtual public Vehiclepublic: Bicycle(); int

8、 c; void set() coutBicycle调用endl; ;class Mortorcycle:public Mortorcar,public Bicyclepublic: Mortorcycle(); int d; void set() coutMortorcycle调用endl; ;int main() Mortorcycle one; one.a =1; one.b=2; one.set(); return 0;运行结果:错误情况:思考题 1.如何在已有的类的基础上设计新的类?派生一个新的类。2.基类和派生类对象的构造顺序是怎样的?先调用基类的构造函数在调用派生类的构造函数。 3.如何利用虚基类解决二义性问题? 将共同的基类设置为虚基类,这时从不同的路径继承过来的同名数据成员在内存中就只有一个副本,同一个函数名也只有一个映射。(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1