2022年2022年类和对象的定义和使用 .pdf
《2022年2022年类和对象的定义和使用 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年类和对象的定义和使用 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实 验 报 告(2016/2017 学年第 二 学期)课程名称面向对象程序设计及C+实验名称实验一:类和对象的定义及使用实验时间2017 年3 月25 日指导单位光电工程学院指导教师陈景强学生姓名班级学号学院(系)专业名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 12 页 -1 实 验 报 告实验名称类和对象的定义及使用指导教师实验类型验证实验学时2 实验时间一、实验目的和要求(1)掌握类与对象的定义与使用方法,理解面向对象方法中通过对象间传递消息的工作机制。(2)正确掌握类的不同属性成员的使用方法。(3)掌握构造函数与析构函数的概念,理解构造函数与析构函数的执行过程。(4)掌
2、握友元函数和友元类的定义和使用。(5)基本掌握指针和引用作为函数参数的应用。二、实验环境(实验设备)硬件:微型计算机软件:Microsoft Visual C+6.0三、实验原理及内容实验题目(1)定义一个时间类 Time,有三个私有成员变量Hour、Minute、Second,定义构造函数、析构函数以及用于改变、获取、输出时间信息的公有函数,主函数中定义时间对象,并通过调用各种成员函数完成时间的设定、改变、获取、输出等功能。按要求完成类的定义与实现。修改数据成员的访问方式,观察编译结果。在 Time类中定义一个成员函数,用于实现时间增加一秒的功能,主函数中通过对象调用该函数,并输出增加一秒后
3、的时间信息。定义一个普通函数。void f(Time t)t.PrintTime();在 Time 类中增加拷贝构造函数的定义,主函数中调用该函数,运用调试工具跟踪,分析整个程序调用构造函数(包括拷贝构造函数)和析构函数的次数;再将f 函数的形式参数分别修改为引用参数和指针参数(此时函数代码修改为t-PrintTime();,主函数中调用,再分析此时调用构造函数和析构函数的次数。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 12 页 -2 实 验 报 告参考实验教材中相应的实验提示部分按要求完成程序,并回答相关问题。要求完成后的源程序代码如下:#include using na
4、mespace std;class Time private:int Hour,Minute,Second;public:Time(int h=0,int m=0,int s=0);Time(const Time&ob);Time();void ChangeTime(int h,int m,int s);int GetHour();int GetMinute();int GetSecond();void PrintTime();void IncreaseOneSecond();Time:Time(int h,int m,int s)Hour=h;Minute=m;Second=s;Time:T
5、ime(const Time&ob)Hour=ob.Hour;Minute=ob.Minute;Second=ob.Second;Time:Time()void Time:ChangeTime(int h,int m,int s)名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 12 页 -3 Hour=h;Minute=m;Second=s;int Time:GetHour()return Hour;int Time:GetMinute()return Minute;int Time:GetSecond()return Second;void Time:PrintTime()co
6、utHour:Minute:Secondendl;void Time:IncreaseOneSecond()Second+;/*void Time:f(Time t)t.PrintTime();coutcall fn;*/int main()Time a;Time b(13);Time c(13,15);Time d(13,15,45);a.PrintTime();b.PrintTime();名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 12 页 -4 c.PrintTime();d.PrintTime();a.ChangeTime(12,15,45);b.ChangeTime
7、(12,15,45);c.ChangeTime(12,15,45);d.ChangeTime(12,15,45);couta.GetHour():a.GetMinute():a.GetSecond()endl;coutb.GetHour():b.GetMinute():b.GetSecond()endl;coutc.GetHour():c.GetMinute():c.GetSecond()endl;coutd.GetHour():d.GetMinute():d.GetSecond()endl;return 0;程序的运行结果是:0:0:0 13:0:0 13:15:0 13:15:45 12:
8、15:45 12:15:45 12:15:45 12:15:45 Press any key to continue构造函数与析构函数的调用方式及执行顺序是:先是构造函数然后是析构函数。调用方式是自动调用,执行顺序是先执行构造函数,待程序结束时再执行析构函数。实 验 报 告名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 12 页 -5 取消类中成员函数IncreaceOneSecond()的注释标志,将该函数补充完整,注意时间在增加一秒情况下的进位关系。该函数的代码如下:void Time:IncreaseOneSecond()if(Second59)Second+;else i
9、f(Second=59&Minute=59&Hour=23)Hour=0;Minute=0;Second=0;else if(Second=59&Minute=59&Hour23)Minute=0;Second=0;Hour+;else if(Second=59&Minute59&Hour23)Minute+;Second=0;Hour+;coutHour:Minute:Secondendl;主函数中定义一个Time类对象并调用一次f 函数,观察结果填写下表:f 函数的原型主函数中调用 f的语句构造函数调用次数拷贝构造函数调用次数析构函数调用次数void f(Time t);F(t0)112v
10、oid f(Time&t);F(t0)101void f(Time*t);F(p)101通过以上结果,关于对象作形式参数、对象引用作形式参数、对象指针作形式参数时构造函数、析构函数的调用次数及顺序,你得到什么结论?实 验 报 告名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 12 页 -6 实验题目(2)定义一个 Girl类和一个 Boy类,这两个类中都有表示姓名、年龄的私有成员变量,都要定义构造函数、析构函数、输出成员变量信息的公有成员函数。根据要求定义相应的类。将 Girl类作为 Boy类的友元类,在 Girl类的成员函数 VisitBoy(Boy&)中访问Boy类的私有成员
11、,观察程序运行结果。在 Boy类的某成员函数 VisitGirl(Girl&)中试图访问 Girl类的私有成员,观察编译器给出的错误信息,理解原因。主函数中正确定义两个类的对象,调用各自的成员函数实现相应功能。再将 Boy类作为 Girl类的友元类,在Boy类的某成员函数VisitGirl(Girl&)中访问 Girl类的私有成员,观察编译器给出的信息。删除两个类中的函数VisitGirl(Girl&),VisitBoy(Boy&),定义一个顶层函数 VisitBoyGirl(Boy&,Girl&),作为以上两个类的友元,通过调用该函数输出男孩和女孩的信息。实验解答:定义相应的类,主函数中定义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年类和对象的定义和使用 2022 对象 定义 使用
限制150内