网站大量收购独家精品文档,联系QQ:2885784924

实验8 多态性及虚函数.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验八 多态性与虚函数 实验目的 了解多态性的两种表现形式:函数重载和虚函数 了解赋值兼容原则的含义 掌握虚函数的定义方法及作用 一、实验任务: 1. 虚函数练习 (1)设计一个抽象类Shape,其中包括double area 和double Area(); (2 )以public 方式从Shape 派生出Circle 和Rectangle 两个派生类,添加相关的数据成 员(Circle: radius,PI; Rectangle:width,height )、有参构造函数、重写Area 函数; (3 )设计主函数:要求定义一个4 元素Shape 类指针数组,数组元素初始化为NULL , 动态创建2 个Circle 对象和2 个Rectangle 对象,用上面的指针数组操作4 个对象,设 计循环求算它们的面积总和。 调试程序,分析理解虚函数动态联编的原理。 2. 自行车(Bicycle )和汽车(Motorcar )都是车辆(Vehicle ),它们有共同的属性最大速度 (maxSpeed )和重量(weight ),也有各自不同的特性,比如自行车的高度(height )和 汽车的座位数(seatNum)。现有车辆若干(实验时设 N=3 ),将其输入并放入一个指针 数组,每个车辆需要设置其属性。输入后分类显示各自属性(即自行车和汽车分别显示 各自属性)。 (1)基本思路: 创建类Vehicle 及其派生类;设基类为Vehicle ,具有属性maxSpeed 和weight ,其中有 一个虚函数print 显示属性,由派生类负责解释具体的属性。由Vehicle 派生两个类Bicycle 和Motocar ,Bicycle 的属性为height ;而Motocar 的属性为seatNum。 (2 )main 中创建指针数组:main 中创建一个指针数组Vehicle* pvehicle[N];并将其中指 针置空。 (3 )main 中的输入: 用一个循环次数少于N 的循环(while 或for )下面是循环中进行的工作:  询问用户是Bicycle 还是Motocar ,或者退出循环?  如果是Bicycle 则创建Bicycle 的堆对象;否则创建Motocar 的堆对象vcl 。(使用 new )  将该对象的地址记录到指针数组pvehicle[] 的空白处。(也可先找到这个空白处,再 创建堆对象)  询问用户新输入的车辆的maxSpeed 和weight ,将这两个参数记录到这个对象vcl 中。  根据是Bicycle 还是Motocar 输入height 或者seatNum 。 (4 )main 中的输出: 建立循环(for 0 ~ N- 1)。在循环中: 检测指针数组中pvehicle[i] (第i 个指针)是否为空? 调用虚函数print()输出属性。(因为有动态联编,所以不用区分是Bicycle 还是Motocar )。 (5 )main 中释放空间: 将指针数组pvehicle[] 中非空指针释放空间(用delete )。 3. 某学校实现进出校园的车辆管理,试用类的形式记录车辆的进出(类名为CampusAutos )。 有车进来时用 new 的方法构建一个新的对象,记录它的牌照(8 个字符的字符串, licensetag ),离开校园时即析构。在 main() 中设一循环,每次可以输入车辆进入及牌照 号或某牌照号的车辆出去(校园内限N 辆,暂设为 5),同时报告校园内现有多少辆汽 车及它们的牌照号。(用对象指针数组)注意:程序中要实现数组溢出保护(车位已满)、 牌照输入错误 (超8 个字符)和查询失败报告 (无此牌照)。停车时要注意重复车牌问 题。 void main() { CampusAutos *parkingSpace[N]; for(int i=0;iN;i++) // 停车场初始化为空 parkingSpace[i] = null; for(;;)

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档