实验7静态成员文档格式.docx
《实验7静态成员文档格式.docx》由会员分享,可在线阅读,更多相关《实验7静态成员文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
![实验7静态成员文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/5/cbae1cc8-dde3-401b-b569-ba4e9af4b608/cbae1cc8-dde3-401b-b569-ba4e9af4b6081.gif)
与结果
实验结果是否正确。
要求完成实验过程中的数据记录、记录要完整和准确、内容要详细,实验结果要与预期的正确结果一致。
35
实验结论
实验结论是否正确。
要求根据实验原理对实验过程中的数据、实验结果进行分析,得出实验结论。
15
总分
100
指导教师(签名)
年月日
说明:
指导教师评分后,实验报告交院(系)办公室保存。
实验7静态成员
1.实习目的及要求
1)掌握静态成员数据的定义及使用;
2)掌握静态成员函数的定义及使用。
2.预习
预习静态成员数据、静态成员函数等相关知识。
类属性:
描述所有对象共同特征的一个数据项,对于每个对象实例,它的属性值是相同的。
采用static关键字来声明。
类的静态成员
静态数据成员
静态函数成员
a)不属于任何一个对象,访问用法:
“类名:
:
标识符”
b)不属于如何一个具体对象,由该类的所有对象维护和使用
c)在类的定义中对静态数据成员进行声明,而它的定义和初始化在类外进行(例:
intPoint:
:
countP=0),私有静态数据成员这里可以直接初始化
静态成员函数可直接访问该类的静态数据和函数成员。
而访问非静态数据成员必须通过参数传递方式得到对象名,然后同对象名来访问。
好处是可以不依赖任何对象,直接访问静态数据。
非静态函数来访问静态数据成员因该使用非内联函数,访问静态数据成员的函数的函数体定义应该与静态成员的初始化写作同一个源文件
UML语言示例:
-countP:
int=0
<
static>
>
+Get():
void
补充:
内联函数语法形式
inline类型说明符被调用函数名(形参表){…}
a)函数体内一般不能有循环语句和switch语句
b)定义必须出现在第一次被调用之前
3.实验内容:
3.1分析下面的程序,指出程序运行的结果
#include<
iostream.h>
classSample
{inta,b;
staticintc;
public:
Sample()
{a=b=0;
c++;
}
voidshow()
{cout<
"
a="
a<
'
'
b="
b<
c="
c<
endl;
};
intSample:
c=1;
voidmain()
{Samplea1,a2;
a1.show();
a2.show();
分析:
1)类和对象分析:
程序定义一个Sample类,主函数定义了两个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)调试运行(演示)
结果:
3.2编写并调试程序
1)编写一个名为score的类,用于统计一个班的学生成绩。
其中使用一个静态成员数据totals来存储总分以及一个静态成员函数re_totals()返回该总分。
并编写相应的测试程序。
程序设计分析
A.对象分析:
研究的对象是学生的成绩,每个学生有各自的分数,他们的分数加起来就构成这群学生的总分。
设计具体的学生数据测试:
学生1
学生2
学生3
学生4
总分
89
91
95
85
360
B.类的分析和设计:
依题意知只有一个类score。
它使用一个静态成员数据totals来存储总分,和一个存储学生成绩的数据项s。
另外,还有一个静态成员函数re_totals()返回该总分和构造函数
C.操作设计:
类声明和实现:
Main()实现:
D.运行测试:
错误一:
错误一分析:
原来类的构造函数方面出错,因为定义对象数组
的时候是要调用无参数的构造函数的,而本程序代码类的设计中只有有参数的构造函数
,所以稍作修改,并把原来的有参数构造函数改成一般的成员函数,最终的修改完成代码如下:
再次运行并得到运行结果:
2)设计一个名为football的类,用于统计一个俱乐部的联赛成绩。
E.对象分析:
研究的对象是俱乐部联赛的成绩,每场比赛都有它的积分(赢3分,输-1分,平1分),他们的积分加起来就构成联赛的总分。
联赛1
联赛2
联赛3
3
-1
1
F.类的分析和设计:
依题意知只有一个类football。
G.操作设计:
Main实现(测试部门):
运行结果如下:
*4课后练习
调试下面的程序,指出程序实现的功能及程序输出结果,调试下列例程,进一步理解对象成员、友元、静态成员等概念。
1)调试程序1
类分析:
结果预测:
2)调试程序2
3)调试程序3
预测结果: