资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,3.5,静态成员,上一节,上一页,下一页,下一节,3.5,静态成员,3.5,静态成员,概念:,用,static,声明的,类成员,称为,静态成员,。,分类:,静态成员分为,静态数据成员,和,静态成员函数,两种。,3.5.1,静态数据成员,静态数据成员,定义格式,:,Static,type,标识符;,静态数据成员,特点,:,(,1,)静态数据成员的数据被所有属于该类的对象,共享,,但,不属于某一个对象,。,(,2,)静态数据成员,不随对象的分配,而分配空间,也,不随对象的撤销,而释放空间。,(,3,)静态数据成员不能在类中进行初始化,必须,在类外初始化,。,用途,:定义类的各个公用数据,如统计总数、平均数等。,例,-5-1,:,学生数统计,#include,class student,static,int,count,;,int,Number,;,public:,void init(),count+;,Number=count;,void print(),cout,No.Number ;,cout,count=count,endl,;,;,int,student:count=0,;,/,静态数据成员,count,,,统计学生总数,/,一般数据成员,Number,,,表示学号,/,初始化静态数据成员,3.5.1,静态数据成员,学生,1,学生,2,Number,Number,初值为,0,count,int,main(),int,i,j;,student s11;,for(i=1;i11;i+),si.init();,/count+;Number=count;,for(j=1;j=i;j+),sj.print();,cout,-,静态成员函数(实参表);,静态成员函数,没有,this,指针,,,因此,调用,静态成员函数还可以用以下,格式,:,类名:,成员函数名(参数);,用途,:可以用静态成员函数在建立任何对象之前处理静态数据成员。,#include,class goods,static,int,totalWeight,;,int,weight;,public:,goods(int,w)weight=w;,goods(),totalWeight,=,totalWeight,-weight;,cout,totalWeight,=,totalWeight,endl,;,static,int,setTotal,(),totalWeight,+=weight;,return,totalWeight,;,int,goods:totalWeight,=0;,void main(),goods g1(25);,cout,totalweight,=,g1.setTotal(),endl,;,goods g2(65);,cout,totalweight,=,goods:setTotal,(),endl,;,0,totalWeight,25,weight,g1,65,g2,25,90,25,0,totalweight,=25,totalweight,=90,totalweight,=25,totalweight,=0,goods g,),totalWeight,+=,g.weight,;,g1,g2,3.5.2,静态成员函数,例,3-5-2,商品类,问题,程序运行时并不能达到分析的结果!,问题出在哪?,新的问题,是否有更好更合理的改进方法?,#include,class goods,static,int,totalWeight,;,int,weight;,public:,goods(int,w)weight=w;,goods(),totalWeight,=,totalWeight,-weight;,cout,totalWeight,=,totalWeight,endl,;,static,int,setTotal,(),return,totalWeight,;,int,goods:totalWeight,=0;,main(),goods g1(25);,cout,totalweight,=,g1.setTotal(),endl,;,goods g2(65);,cout,totalweight,=“,goods:setTotal,(),endl,;,totalWeight,+=weight;,3.5.2,静态成员函数,例,3-5-3,商品类改进,静态成员函数使用小结:,静态成员函数主要用来,访问类中静态数据成员,或全局变量。,一般情况下,静态成员函数,不访问类中的非静态成员,。如果确实需要,静态成员函数只能通过对象名访问该对象的非静态成员。,静态成员函数可以在类体内或类体外定义,在类体外定义时,不要使用,static,前缀。,
展开阅读全文