实验5(2) 参考答案

实验5(2) 参考答案

ID:1199313

大小:86.50 KB

页数:13页

时间:2017-11-08

实验5(2)  参考答案_第1页
实验5(2)  参考答案_第2页
实验5(2)  参考答案_第3页
实验5(2)  参考答案_第4页
实验5(2)  参考答案_第5页
资源描述:

《实验5(2) 参考答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验5(2)类的继承与派生参考答案一、实验目的与实验要求(1)掌握单继承和多重继承下派生类的定义方法,理解基类成员在不同的继承方式下不同的访问属性。(2)正确定义派生类的构造函数与析构函数,理解定义一个派生类对象时构造函数、析构函数的调用次序。(3)理解同名冲突的产生原因,会使用虚基类来解决第三类同名冲突问题,并理解引入虚基类后构造函数、析构函数的调用顺序。(4)理解赋值兼容的相关使用方法。二、实验内容题目1:定义一个车基类,派生出自行车类和汽车类,并以自行车类和汽车类为基类共同派生出摩托车类,每个类都要定义带有参数的构造函

2、数。自行车类分别使用private、protected、public三种方式来继承车基类,观察基类成员在派生类中的访问属性;观察自行车类、汽车类和摩托车类对象定义时构造、析构函数的调用顺序。最后将车基类定义为虚基类再观察程序运行结果。题目的具体要求如下。①定义基类Vehicle,它具有两个保护成员变量:MaxSpeed、Weight,有3个公有的成员函数:Run()、Stop()、Show(),以及带参数的构造函数、析构函数;再定义一个从Vehicle公有继承的Bicycle类,增加保护属性的成员变量Height,定义Bic

3、ycle类的构造函数、析构函数,改造Show函数,用于输出本类中的完整信息。main()函数中定义Bicycle类对象,观察构造函数和析构函数的执行顺序,以及各成员函数的调用。使用跟踪的方法观察程序运行的每一步究竟调用的是哪一个函数。②在上一步基础上,将继承方式分别修改为protected和private,再重新编译,观察这时的报错信息并进行分析。③将Bicycle类的继承方式恢复为public,代码回到①的状态,再在Bicycle类下面增加一个第二层汽车类Car的定义,Car也是公有继承基类Vehicle,其中增加了一个保

4、护成员变量SeatNum,表示汽车有几个座位,其定义方式与类Bicycle类似。主函数中定义该类对象,观察运行结果。④在上一步的基础上,再定义一个第三层类MotorCycle,该类以公有方式继承了第二层的Bicycle和Car类。定义其构造函数,要调用两个直接基类的构造函数,再改造函数Show(),输出所有四个成员变量的信息。主函数中只定义类MotorCycle的对象并调用相应的函数,代码请参考实验指导1的④。程序进行编译,会产生4个错误、8个警告,因为存在二义性问题,在同名成员前增加“基类名::”以消除二义性直到程序正确,

5、观察运行结果。⑤再将代码恢复至上一步未修改前,即存在4个错误、8个警告的状态,再作一定的修改,将Vehicle声明为虚基类以消除二义性,同时修改第三层类的构造函数,其余代码不变,具体请参考实验指导1的⑤。观察运行结果,理解此时构造函数、析构函数的调用顺序及用虚基类消除二义性的原理。参考程序如下:#includeusingnamespacestd;classVehicle//定义基类{protected:intMaxSpeed;//最大速度intWeight;//重量public:Vehicle(intm,

6、intw)//初始化成员变量的值{MaxSpeed=m;Weight=w;cout<<"ConstructingVehicle...";}~Vehicle(){cout<<"DestructingVehicle...";}voidRun(){cout<<"Thevehicleisrunning!";}voidStop(){cout<<"Pleasestoprunning!";}voidShow(){cout<<"It'smaxspeedis:"<

7、ghtis:"<

8、类的Show函数{Vehicle::Show();//调用基类Show输出MaxSpeed和Weight值cout<<"It'sHeightis:"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。