实验报告二  _第1页
实验报告二  _第2页
实验报告二  _第3页
实验报告二  _第4页
实验报告二  _第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/17实验报告二实验报告二实验名称:类的定义与使用学时安排:课内1+课外3实验类别:综合性实验实验要求:4人1组完成人:专业学号姓名自评分专业学号姓名自评分专业学号姓名自评分专业学号姓名自评分一、实验目的1)掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2)掌握类的组合、类对象的定义;3)理解类的成员的访问控制的含义,公有、私有和保护成员的区别;二、实验原理综合性实验,通过运行课本例题,了解并熟悉:建立类及对象,用类的成员函数和对象访问类的成员;利用建立类的构造函数,完成类的成员的初始化。用类和类的组合进行简单的编程。2/17三、实验平台VisualC+四、实验内容1、输入并运行课本例题4-14-4。#includeusingnamespacestd;classClock/时钟类的定义public:/外部接口,共有成员函数voidsetTime;voidshowTime;private:/私有数据成员inthour,minute,second;/时钟类成员函数的实现voidClock:setTimehour=newH;minute=newM;second=newS;inlinevoidClock:showTimecout/主函数intmain3/17ClockmyClock;/定义对象Myclockcout;/设置时间为默认值;/显示时间cout;/设置时间为8:30:30;/显示时间return0;/运行结果如图所示#includeusingnamespacestd;classPoint/Point类的定义public:/外部接口Point/构造函数x=xx;y=yy;Point;/复制构造函数intgetXreturnx;intgetY4/17returny;private:intx,y;/成员函数的实现Point:Pointx=;y=;cout/形参为Point类对象的函数voidfun1cout/返回值为Point类对象的函数Pointfun2Pointa;returna;intmainPointa;Pointb=a;coutfun1;/调用拷贝构造函数5/17b=fun2;coutreturn0;/运行结果如图所示2、设计并测试一个矩形类,属性为矩形的左下与右上角的坐标,矩形水平放置。操作为计算矩形周长与面积。测试包括用成员函数和普通函数。用类的组合如何实现?#include#include/#includeusingnamespacestd;classRectangledoubleleft,top;doubleright,bottom;public:Rectangle;Rectangle;/析构函数,在此函数体为空voidAssign;doublegetLeftreturnleft;/以下四个函数皆为内联成员函数doublegetRightreturnright;doublegetTopreturntop;doublegetBottomreturnbottom;6/17voidShow;doubleArea;doublePerimeter;/构造函数,带缺省参数,带缺省值为全0,在声明中指定Rectangle:Rectangleleft=l,top=t;right=r,bottom=b;voidRectangle:Assign/赋值left=l,top=t;right=r,bottom=b;voidRectangle:Show/成员函数直接使用私有的数据成员coutcoutdoubleRectangle:Areareturnfabs*);doubleRectangle:Perimeterreturn2*+fabs);intmain7/17Rectanglerect;Rectanglerect1;Rectanglerect2;coutcoutreturn0;/运行结果如图所示3、定义一个圆类,属性为半径、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。要求定义构造函数和复制构造函数。用类的组合如何实现?#include#includeusingnamespacestd;classCircledoubler,Area,Circumference;public:Circle;8/17Circle;voidSetR;doubleGetRreturnr;doubleGetAreaCirclereturnArea;doubleGetCircumferencereturnCircumference;Circle:Circler=a;Area=r*r*;Circumference=2*r*;Circle:Circler=;Area=;Circumference=;voidCircle:SetRr=R;Area=r*r*;Circumference=2*r*;9/17intmainCirclecl1,cl2,cl3=cl1;cout;coutreturn0;4、定义一个学生类Student,学生类中有3个私有数据成员:num、name、age;3个公有成员函数:Student、display、Student。display负责显示学生的基本信息。#includeusingnamespacestd;classstudentprivate:intnum;charname30;intage;#includepublic:studentnum=nu;10/17strcpy;age=ag;voiddisplaystudent*sp=ss0;inti=0;whilecoutnumnameagesp=ssi;sp=NULL;voidpaixustudent*sp=ss0;student*flag=ss0;student*temp=NULL;intleft=total-1;inti=0;intnum,age;charctemp30;while11/17flag=sstotal-left-1;sp=sstotal-left;i=0;whileifnum=sp-num;sp-num=flag-num;flag-num=sp-num;age=sp-age;sp-age=flag-age;flag-age=age;strcpy;strcpy;strcpy;i+;sp=sstotal-left+i;left-;12/17;intmainstudent*ss4;forssi=NULL;ss0=newstudent;ss1=newstudent;ss2=newstudent;ss3=newstudent;ss0-display;ss0-paixu;ss0-display;return0;5、理解拷贝构造函数的目的和调用。在三种情况下,系统自动调用拷贝构造函数。当用类的一个对象去初始化该类的另一个对象时;如果函数的形参是类的对象,调用函数,进行形参和实参的结合时;如果函数的返回值是类的对象,函数执行完成返回调用者时。以下程序都是定义一个屏幕上的点类,该类具有13/17x、y坐标属性。输入并运行下列三个程序,体会拷贝构造函数的用法。【程序1】#includeusingnamespacestd;classPointpublic:Pointx=xx;y=yy;coutPoint;intgetXreturnx;intgetYreturny;private:intx,y;Point:Pointx=;y=;coutintmainPointa;14/17Pointb=a;coutreturn0;【程序2】#includeusingnamespacestd;classPointpublic:Pointx=xx;y=yy;coutPoint;intgetXreturnx;intgetYreturny;private:intx,y;Point:Pointy=;coutvoidfun1cout15/17intmainPointa;Pointb=a;coutfun1;/调用复制构造函数,实现形参和实参结合return0;【程序3】#includeusingnamespacestd;classPointpublic:Pointx=xx;y=yy;coutPoint;intgetXreturnx;intgetYreturny;private:intx,y;Point:Point16/17x=;y=;coutPointfun2Pointtemp;/调用构造函数returntemp;intmainPointa;Pointb=a;coutb=fun2;cout5、选做题:看急诊内科的病人的信息有:姓名、性别、年龄,测得的体温,还有医生开出的处方。要求将病人的有关信息输出。若将年龄属性改为出生日期,如何用类的组合实现?五、实验报告1、在【实验内容】每题后面列出源代码,要求:有必

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论