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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(内蒙古科技大学面向对象的程序设计实验8 继承一精编版.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

内蒙古科技大学面向对象的程序设计实验8 继承一精编版.docx

1、内蒙古科技大学面向对象的程序设计实验8 继承一精编版内蒙古科技大学面向对象的程序设计实验报告课程名称:面向对象的程序设计姓名:陈伟光实验名称:继承(一)学号:1567159118任课教师:刘月峰专业:软件工程指导教师:刘月峰班级:15-软件一班一、实验目的1理解继承的含义以及声明;2理解共有派生、私有派生和保护派生的含义以及使用;3理解单派生类中构造函数和析构函数的调用顺序。二、实验环境编译器:Visual C+ 6.0.操作系统:Windows 7旗舰版三、实验内容2.1练习(一):1理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include iostream.hc

2、lass CBasepublic:CBase(int a) :a(a)protected:void print() couta=aendl;private:int a;class CDerive : public CBasepublic:void print() CBase:print(); coutb=bendl;private:int b;void main()CDerive d;d.print();CBase b;b.print();问题一:以上程序有两大错误,试指出来,并改正之?2理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include iostream.h

3、class CBasepublic:CBase(int a) :a(a) coutbase structureendl;CBase() coutbase destructureendl;void print() couta=aendl;protected:int a;class CDerive : public CBasepublic:CDerive(int a, int b,int c) :CBase(a),b(b),c(c) coutderive structureendl;CDerive() coutderive destructureendl;void print() CBase:pr

4、int(); coutb.a=b.aendl; coutc=cendl;private:CBase b;int c;void main()CDerive d(1,2,3); -d.print();问题一:以上程序的输出结果是什么,说明为什么?问题二:处语句执行完后,d.b.a的值为多少?2.2练习(二):1定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:aCLine类含有计算直线长度和斜率的成员函数;bCCircle类含有计算圆面积的成员函数。四、实验过程练习1实验题目源代码如下:直接编译结果如下:查看错因,首先前两句话写明

5、,在创建CBase和CDerive对象时候,没有传递参数,实际代码中CDerive根本没有正确的构造函数,代码区中加入一段带有初始化列表的构造函数第三句话指明基类对象b直接调用CBase类保护成员函数,属于类外调用,权限错误,此处可以将print的权限改为public修改后的代码如下:然后尝试编译运行:运行成功,符合题意练习2实验题目提供源代码如下:尝试编译:错误集中在基类成员数据a上,分析代码,CDerive类对象d创建时候一共有三个参数,1传递至派生类,再调用基类构造函数,3直接传递给派生类构造函数, 2传递给了派生类的中内嵌的基类成员对象,然而在公有继承下,派生类对象只能访问基类的公有数

6、据,所以此处将a的权限改为public,修改之后的代码如下:尝试编译运行:结果和代码本意相同,修改成功练习3根据题意,设计代码如下:面积计算以及斜率计算分别写在了CLine类和CCircle类的构造函数中,在创建对象的时候输入x2,y2 r即可算出距离和面积试运行结果如下:运行结果正确五、实验总结实验源代码:练习(一)#include iostream.hclass CBasepublic:CBase(int a):a(a) / protected:void print() /错误1.CBase类对象类外无法直接调用此主函数,应该改为public型couta=aendl;private:int

7、 a;class CDerive : public CBasepublic:CDerive(int a,int b):CBase(a),b(b) /错误2.构造函数错误,初始化列表和参数错误void print()CBase:print(); /保护继承下,派生类中可以访问基类的公有和保护数据coutb=bendl;private:int b;void main()CDerive d(0,0); /因为原题构造函数中有形参,所以创建要加上参数d.print();CBase b(0);b.print();/*#include iostream.hclass CBasepublic:CBase(i

8、nt a):a(a)protected:void print()couta=aendl;private:int a;class CDerive : public CBasepublic:void print()CBase:print();coutb=bendl;private:int b;void main()CDerive d;d.print();CBase b;b.print();*/练习(二)#include iostream.hclass CBasepublic:CBase(int a):a(a)coutbase structureendl;CBase()coutbase destru

9、ctureendl;void print()couta=aendl;public:int a;class CDerive : public CBasepublic:CDerive(int a, int b,int c):CBase(a),b(b),c(c)coutderive structureendl;CDerive()coutderive destructureendl;void print()CBase:print();coutb.a=b.aendl; /公有继承下派生类子对象只能访问基类的公有数据;coutc=cendl;private:CBase b;int c;void main(

10、)CDerive d(1,2,3);/ -d.print();/*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2 ,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/*#include iostream.hclass CBasepublic:CBase(int a):a(a)coutbase structureendl;CBase()coutbase destructureendl;void print()couta=aendl;protected:int a;class CDerive : public CBasepublic:CDer

11、ive(int a, int b,int c):CBase(a),b(b),c(c)coutderive structureendl;CDerive()coutderive destructureendl;void print()CBase:print();coutb.a=b.aendl;coutc=cendl;private:CBase b;int c;void main()CDerive d(1,2,3); -d.print();*/练习(三)#include #include class CPointprivate:float x,y;public:CPoint(float x1,flo

12、at y1):x(x1),y(y1)cout-CPoint基类构造函数已调用-endl;void display()coutx= CPoint:x y= CPoint:yendl;class CLine:public CPointprivate:double k;double l;public:CLine(float x1,float y1):CPoint(x1,y1)cout-CLine派生类构造函数已调用-endl;float x2,y2;coutPlease input x2,y2:x2y2;l=sqrt(x1-x2)*(x1-x2)+(y2-y1)*(y2-y1);coutl:lend

13、l;if(y2-y1!=0)k=(y2-y1)/(x2-x1);coutk= kendl;elsecout分母为0,k不存在endl; ;class CCircle:public CPointprivate:double r;public:CCircle(float x1,float y1):CPoint(x1,y1)cout-CCircle派生类构造函数已调用-endl;coutplease input r:r;coutS= 3.14159*r*rendl;void main()float x1,y1;coutPlease input x1,y1:x1y1;CPoint CP(x1,y1);CP.display();CLine CL(x1,y1);CCircle CC(x1,y1);六、参考文献参考的资料:C+面向对象程序设计

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

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