欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C++继承与派生实验报告(共8页).doc

    • 资源ID:13698325       资源大小:375KB        全文页数:8页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++继承与派生实验报告(共8页).doc

    精选优质文档-倾情为你奉上 应用数学 学院 信息与计算科学(信息计算) 专业 1 班、学号姓名 吴伟栓 教师评定_实验题目 继承与派生 一、 实验目的与任务实验目的:(1)学习声明和使用类的继承关系,声明派生类。(2)熟悉不同继承方式下对基类成员的访问控制。(3)学习利用虚基类解决二义性问题。实验任务:(1)声明一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。(2)声明一个基类BaseClass,有整形成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。(3)声明一个车(vehicle)基类,具有MaxSpeed,Weight等成员变量,Run,Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motocycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。()(选做)从实验六中的people(人员)类派生出student(学生)类,添加属性:班号 char classNo7;从people类派生出teacher(教师)类,添加属性:职务char principalship11、 部门char department21。从student类中派生出graduate(研究生)类,添加属性:专业char subject21、导师teacherradviser;从graduate类和teacher类派生出(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。 二、 实验步骤()编写程序声明基类Animal,成员变量age声明为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:error c2248:age:can not access private member declared in class Animal 把改为公有成员变量后重新编译就可以了。 ()编写程序声明一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。 ()用Debug功能跟踪程序(2)的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。()编写程序声明一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和mororcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。 ()编译成功后,把vehicle设置为非虚基类,再编译一次,此时系统报错,无法编译成功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。三、 实验方案(1)(2)(3)(4)四、 实验结果实验一:编译不通过实验二程序运行结果如下:实验二在lab7_2中,创建了一个派生类DerivedClass的对象a,先调用基类BaseClass的构造函数,再调用派生类DerivedClass的构造函数,当对象a消失时,先调用派生类DerivedClass的析构函数,再调用基类BaseClass的析构函数。由此可见,构造函数和析构函数的调用顺序是相反的。实验三此程序的结果如下:实验三不把vehicle设为虚基类,编译不通过五、 结论实验一从运行结果看,本程序是错误的,原因在于dog类的成员函数无法访问到Animal类的私有成员。将age改为公有成员后,得到如下正确程序:程序运行结果如下:实验二在此程序中,创建了一个派生类的对象,先调用基类的构造函数,再调用派生类的构造函数,当对象消失时,先调用派生类的析构函数,再调用基类的析构函数。由此可见,构造函数和析构函数的调用顺序是相反的。实验二在lab7_2中,创建了一个派生类DerivedClass的对象a,先调用基类BaseClass的构造函数,再调用派生类DerivedClass的构造函数,当对象a消失时,先调用派生类DerivedClass的析构函数,再调用基类BaseClass的析构函数。由此可见,构造函数和析构函数的调用顺序是相反的。实验三如果不把vehicle设为虚基类,系统编译则不通过。原因在于类bicycle、motorcar、motorcycle中的Run、Stop成员函数是从基类vehicle派生而来的,在这些直接基类中从上一级共同基类继承来的成员函数就有相同的名称。在派生类对象中,这些同名函数成员在内存中同时存在拥有多个副本,同一个函数名会有多个映射。解决的办法就是将共同基类vehicle设置为虚基类,这时从不同的路径继承来的同名函数成员在内存中就只有一个副本,同一个函数成员也只有一个映射。六、 问题与讨论问题一:把数据成员设置为共有的,这样合理吗?本人认为在选作题中是可以的,因为你要把人员的信息显示出来,供大家看,就不存在隐私。问题二:关于虚基类的一些调用是如何进行的?将共同基类设置为虚基类,在派生类中声明的对象可以访问到虚基类的公有函数,并且最远的派生类也可以调用其他继承虚基类的派生类中的公有函数。如果虚基类中有同名函数,则调用的函数就取决于对象是哪个类的。以上所有对象必须遵循:慢声明类的对象可以访问先声明的,但是反之不成立。问题三:派生类的构造函数初始化基类的构造函数有什么简便的作法?针对数据过多的构造函数,一个一个初始化,很麻烦,本人到现在也不知道有啥好方法,真心求解。问题四:继承与派生类有什么好处?类的继承允许程序员在保持原有类的基础上,进行更具体,更详细的类定义。新的类由原有的类所产生,可以说新类继承了原有类的特征。派生新类的过程一般包括吸收原有类的成员,改造原有类的成员和添加新成员3个步骤。专心-专注-专业

    注意事项

    本文(C++继承与派生实验报告(共8页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开