1、与结果实验结果是否正确。要求完成实验过程中的数据记录、记录要完整和准确、内容要详细,实验结果要与预期的正确结果一致。35实验结论实验结论是否正确。要求根据实验原理对实验过程中的数据、实验结果进行分析,得出实验结论。15总 分100 指导教师(签名) 年 月 日说明:指导教师评分后,实验报告交院(系)办公室保存。实验7 静态成员1实习目的及要求1)掌握静态成员数据的定义及使用;2)掌握静态成员函数的定义及使用。2预习 预习静态成员数据、静态成员函数等相关知识。类属性:描述所有对象共同特征的一个数据项,对于每个对象实例,它的属性值是相同的。采用static关键字来声明。类的静态成员静态数据成员静态
2、函数成员a) 不属于任何一个对象,访问用法:“类名:标识符”b) 不属于如何一个具体对象,由该类的所有对象维护和使用c) 在类的定义中对静态数据成员进行声明,而它的定义和初始化在类外进行(例:int Point:countP=0),私有静态数据成员这里可以直接初始化静态成员函数可直接访问该类的静态数据和函数成员。而访问非静态数据成员必须通过参数传递方式得到对象名,然后同对象名来访问。好处是可以不依赖任何对象,直接访问静态数据。非静态函数来访问静态数据成员因该使用非内联函数,访问静态数据成员的函数的函数体定义应该与静态成员的初始化写作同一个源文件UML语言示例:-countP:int=0+Get
3、():void补充:内联函数语法形式 inline 类型说明符 被调用函数名(形参表)a) 函数体内一般不能有循环语句和switch语句b) 定义必须出现在第一次被调用之前3实验内容:31分析下面的程序,指出程序运行的结果 #includeclass Sample int a ,b ; static int c;public : Sample() a=b=0;c+;void show()couta=a,b=bc=cendl;int Sample:c=1 ;void main()Sample a1,a2 ;a1.show();a2.show();分析:1) 类和对象分析: 程序定义一个Sampl
4、e类,主函数定义了两个Sample类的对象a1,a2,它们共同使用一个静态数据成员c。类图和对象图如下:2) 结果预测:先创建a1,调用构造函数Sample(),a1.a=a1.b=0,c=2;接着创建a2,再次调用构造函数Sample(),a2.a=a2.b=0,而c会在a1的基础上再自增,即c=3,所以在后面执行show()函数的时候,c的值始终是3,因为c自始至终都只有一份拷贝。3) 调试运行(演示)结果:32 编写并调试程序1)编写一个名为score的类,用于统计一个班的学生成绩。其中使用一个静态成员数据totals来存储总分以及一个静态成员函数re_totals()返回该总分。并编写
5、相应的测试程序。程序设计分析A 对象分析:研究的对象是学生的成绩,每个学生有各自的分数,他们的分数加起来就构成这群学生的总分。设计具体的学生数据测试:学生1学生2学生3学生4总分89919585360B 类的分析和设计:依题意知只有一个类score。它使用一个静态成员数据totals来存储总分,和一个存储学生成绩的数据项s。另外,还有一个静态成员函数re_totals()返回该总分和构造函数C 操作设计:类声明和实现:Main()实现:D 运行测试:错误一:错误一分析:原来类的构造函数方面出错,因为定义对象数组的时候是要调用无参数的构造函数的,而本程序代码类的设计中只有有参数的构造函数,所以稍
6、作修改,并把原来的有参数构造函数改成一般的成员函数,最终的修改完成代码如下:再次运行并得到运行结果:2)设计一个名为football的类,用于统计一个俱乐部的联赛成绩。E 对象分析:研究的对象是俱乐部联赛的成绩,每场比赛都有它的积分(赢3分,输-1分,平1分),他们的积分加起来就构成联赛的总分。联赛1联赛2联赛33-11F 类的分析和设计:依题意知只有一个类football。G 操作设计:Main实现(测试部门):运行结果如下:*4 课后练习调试下面的程序,指出程序实现的功能及程序输出结果,调试下列例程,进一步理解对象成员、友元、静态成员等概念。1)调试程序1类分析:结果预测:2)调试程序23)调试程序3预测结果:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1