版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++程序设计试验汇报课程名称:C++程序设计姓名:王鑫试验名称:C++面向对象程序设计学号:3509任课教师:张明卫专业:软件工程指导教师:张明卫班级:0908班试验成绩:批阅教师签字:
一、试验目标此次试验所包括并要求掌握知识点。1) 学习类与对象定义、申明及使用方法。2) 学习具备不一样属性数据组员与组员函数访问方式。3) 了解结构函数和析构函数定义与执行过程。4) 学习定义和使用类继承关系,定义派生类。二、试验环境写出程序编写时所使用编译器、操作系统等。编译器:VisualC++6.0.操作系统:WindowsXP.三、试验内容与试验过程及分析列出试验需要做各个题目,并针对每个题目:写出关键代码(要求选出该题目最关键代码并加注释);描述调试过程、调试过程中所出现现象及处理方法,给出题目最终运行结果;对该题目进行简短总结,写出该题目所包括知识点。下面是“平面上点”类定义:classCPoint{private: intx,y; staticintnCount;//nCount用于保留点个数public: CPoint(intpx=0,intpy=0); CPoint(CPoint&); ~CPoint(); intGetX(); intGetY(); voidSetX(int); voidSetY(int); voidShowPoint();};请完成该类中各组员函数定义。该类是一个基本类。在编写该类时,要注意对静态组员nCount操作,使其能够正确表示程序中点个数。编完该类后,要在main()函数中进行测试,分别定义CPoint类对象、指针、引用,对各组员函数进行调用。分析对静态组员调用和通常组员调用方式有什么不一样。1,本题目标关键代码:intCPoint::nCount=0;//对nCount进行初始化,静态组员调用CPoint::CPoint(intpx,intpy)//结构函数{ x=px; y=py; nCount++;//点个数累加}CPoint::CPoint(CPoint&p)//对结构函数进行拷贝{ x=p.x; y=p.y; nCount++;//点个数继续累加}CPoint::~CPoint()//析构函数{ nCount--;}intCPoint::GetX(){ returnx;}intCPoint::GetY(){ returny;}voidCPoint::SetX(intpx1)//设置点X坐标{ x=px1;}voidCPoint::SetY(intpy1)//设置点Y坐标{ y=py1;}voidCPoint::ShowPoint()//输出点个数及点坐标到屏幕{ cout<<"点个数为:"<<CPoint::nCount<<endl; cout<<"平面点坐标为:("<<CPoint::GetX()<<","<<CPoint::GetY()<<")"<<endl;}2,调试过程中所出现现象及处理方法:在调试时,程序不能运行没有运行成功,经过查阅资料后得知对静态组员调用必须用类名加双冒号进行调用,把代码改成CPoint::nCount后,程序成功运行。在结构函数申明和定义中,都进行了变量赋值,结果造成编译不经过,在去掉申明中赋值后,才编译经过。程序运行结果:3,题目总结及题目所包括知识点:经过本题学到了静态组员调用方法以及怎样结构、析构函数。本题目主要包括知识点有:结构函数、析构函数和拷贝。静态组员调用和类与对象定义、申明及使用方法。拷贝函数和结构函数编写。具备不一样属性数据组员与组员函数访问方式。结构函数和析构函数定义与执行过程。2)下面是“平面上线段”类定义:classCLine{private: CPointpt1,pt2;//pt1和pt2分别代表该线段起点和终点public: CLine(); CLine(intx1,inty1,intx2,inty2); CLine(CPointp1,CPointp2); doubleDistance();//计算该线段长度组员函数 voidShowLine();};请完成该类中各组员函数定义。并利用VC调试工具观察含有组合关系类结构函数和析构函数执行情况。本题目标关键代码:public: CLine();//无参结构函数 CLine(intx1,inty1,intx2,inty2):pt1(x1,y1),pt2(x2,y2){}//结构函数初始化列表 CLine(CPointp1,CPointp2):pt1(p1),pt2(p2){}//结构函数初始化列表 doubleDistance();//计算该线段长度组员函数 voidShowLine();};doubleCLine::Distance()//计算线段长度{ doublea,b; a=(pt2.GetX()-pt1.GetX())*(pt2.GetX()-pt1.GetX()); b=(pt2.GetY()-pt1.GetY())*(pt2.GetY()-pt1.GetY()); returnsqrt(a+b);}voidCLine::ShowLine()//在屏幕输出线段长度{ cout<<"线段长度为:"<<CLine::Distance()<<endl;}2,调试过程中所出现现象及处理方法:在调试时,程序先执行nCount结构函数,然后执行Cline结构函数。在使用初始化参数列表时,要依照结构函数里参数变量名来编写参数列表。程序运行结果:3,题目总结及题目所包括知识点:经过这个试验,了解到了怎样利用初始化列表进行结构函数,它能够显示调用基类组员,本题目包括到主要知识点是用初始化列表进行结构函数,组合类申明和定义以及组合类结构函数初始化过程。下面是“空间中点”类定义:classCThreePoint:publicCPoint{private: intz;public: CThreePoint(); CThreePoint(int,int,int); intGetZ(); voidSetZ(intpz); virtualvoidShowPoint();};请完成该类中各组员函数定义。并利用VC调试工具观察含有继承关系类结构函数和析构函数执行情况。分析为何要把ShowPoint()函数设置为虚函数?有什么作用?请在main()函数中做测试。1,本题目标关键代码:CThreePoint::CThreePoint(intpx2,intpy2,intpz2)//CThreePoint结构函数{ CPoint::SetX(px2); CPoint::SetY(py2); CThreePoint::SetZ(pz2);}CThreePoint::~CThreePoint(){}//CTrheePoint析构函数intCThreePoint::GetZ()//获取并返回Z坐标值{ returnz;}voidCThreePoint::SetZ(intpz)//对Z坐标值进行设置{ z=pz;}voidCThreePoint::ShowPoint()//屏幕输出点坐标{ cout<<"空间点坐标为:("<<CPoint::GetX()<<","<<CPoint::GetY()<<","<<CThreePoint::GetZ()<<")"<<endl;}2,调试过程中所出现现象及处理方法:在调试过程中,程序首先执行基类结构函数,然后在执行自己结构函数。程序运行结果:3,题目总结及题目所包括知识点:经过这个试验,了解到了:程序首先执行基类结构函数,然后执行自己结构函数,以及在继承关系中怎样编写结构函数。派生类对象不能直接访问基类继承过来私有组员。基类将函数申明为虚函数即可,派生类和函数定义处能够没关于键字virtual.本题目包括知识点有:定义和使用类继承关系,定义派生类、派生类中结构函数编写方法,和继承关系中结构函数执行次序。4) 定义一个基类Animal,有私有整型组员变量age,结构其派生类dog,在其组员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有组员变量,还会有问题吗?把age改为保护组员变量呢?编程试试看。本题目标关键代码:classAnimal{public: intage;};classdog:publicAnimal{public: intSetAge(intn) { age=3; }};2,题目总结及题目所包括知识点:编写基类Animal时,组员变量age定义为私有。结构派生类dog,在其组员函数SetAge(intn)中直接对age赋值时,会出现类似以下错误提醒:errorC2248:‘age’:cannotaccessprivatememberdeclaredinclass‘Animal’把age改为公有组员变量后重新编译就能够了。再把age改为保护组员变量步骤相同。说明了派生类不能调用基类私有组员变量变量,而能够调用基类公有组员和保护组员。设计知识点有:派生类不能访问基类私有组员,能够访问基类保护和公有组员。五、试验总结对自己试验自我剖析,总结试验心得体会,并提出试验改进意见等。在这次试验中,感觉自己程序最难编写地方就是类结构函数,在经过仔细查阅资料和问询同学后,终于熟练了结构函数编写,从这次试验中我学到了很多C++关键知识,利如函数结构和析构函数,结构函数初始化列表,拷贝,派生类和基类结构函数执行先后次序等。使我们在巩固基础前提下游更大提升。对于本试验,即使试验内容极少,但涵盖知识点颇多,能让同学轻松学到很多知识,但我感觉在给程序多加一些功效和达成愈加好效果。能让我们在学到知识同时,锻炼编写出众代码能力。六、思索题回答试验要求思索题,要将原题也写出来。结构函数和析构函数作用是什么?答:结构函数又分为实例结构函数:实例结构函数用于创建和初始化实例。私有结构函数:私有结构函数是一个特殊实例结构函数。它通惯用在只包含静态组员类中。假如类具备一个或多个私有结构函数而没有公共结构函数,则不允许其余类(除了嵌套类)创建该类实例。静态结构函数:静态结构函数用于初始化类。在创建第一个实例或引用任何静态组员之前,将自动调用静态结构函数来初始化类。带参数结构函数作用是为了来初始化一些值而设。析构函数:析构函数用于销毁类实例。什么是封装?类是怎样进行封装?答:封装就是将抽象得到数据和行为(或功效)相结合,形成一个有机整体,也就是将数据与操作数据源代码进行有机结合,形成“类”,其中数据和函数都是类组员。封装目标是增强安全性和简化编程,使用者无须了解详细实现细节,而只是要经过外部接口,一特定访问权限来使用类组员。经过封装使一部分组员充当类与外部接口,而将其余组员隐蔽起来,这么就达成了对组员访问权限合理控制,使不一样类之间相互影响降低到最低程度,进而增强数据安全性和简化程序编写工作。C++中有哪几个派生方式?每种方式派生类对基类组员继承和访问控制属性是什么样?答:C++中派生方式有public、private、protected。基类(父类)得私有组员,派生类(子类)都不能访问;基类得公有组员,派生类得继承方式决定了其函数得形式;基类得保护组员在派生类得公有继承中也是保护类型。派生类对象和基类对象是什么样关系?派生类对象结构函数和析构函数执行次序是怎样?答:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版个人车辆抵押债权债务处理专项协议4篇
- 二零二五年度房产置换及配套设施建设协议3篇
- 二零二五年度锚杆施工与地质灾害防治合同4篇
- 二零二五年度出租车租赁与城市交通规划合同4篇
- 个人二手房交易法律合同版
- 2025年度配电箱智能化改造项目合同4篇
- 2025年度个人之间房屋买卖税费承担合同范本3篇
- 二零二五版智能代账系统应用服务合同2篇
- 2025年度铝合金汽车零部件研发采购合同3篇
- 2025年护理院护理团队建设与管理合同3篇
- 小儿甲型流感护理查房
- 雾化吸入疗法合理用药专家共识(2024版)解读
- 2021年全国高考物理真题试卷及解析(全国已卷)
- 拆迁评估机构选定方案
- 趣味知识问答100道
- 钢管竖向承载力表
- 2024年新北师大版八年级上册物理全册教学课件(新版教材)
- 人教版数学四年级下册核心素养目标全册教学设计
- JJG 692-2010无创自动测量血压计
- 三年级下册口算天天100题(A4打印版)
- CSSD职业暴露与防护
评论
0/150
提交评论