2014年(6)
分类: C/C++
2014-04-18 17:53:14
C++类中的静态成员是类中各个对象所共享的成员,从数据共享的角度出发,先容静态成员在类中实现数据共享的方法、功能。
C++中类的成员分为静态数据成员和静态成员函数。它的功能类似于全局变量,可以实现C++多个对象之间的数据共享,但全局变量在程序中的可操纵性难于控制,经常会带来不平安性,所以,考虑到程序的平安性,作者在本文讲述了静态成员在C++程序中的使用方法及功能。
一、静态数据成员的应用
C++中的静态数据成员是同一个类中所有对象所共享的成员,静态数据成员中存放的是所有对象的值,不是某一个对象的值,所以同一类中的每个对象的值都是一样,但它的值也是可以改变的。通过下面的实例可以对以上的内容加以证实、说明静态数据成员在C++类中的使用方法及功能。
(一)静态数据成员的定义、初始化
静态数据成员定义是以static关键字开始,后跟静态数据成员类型符、变量名;例摘要:staticints;
(二)静态数据成员的初始化
静态数据成员的初始化是在类体外进行,初始化时不用加访问权限符,但是静态成数据成员是类的成员,所以在初始化时应指明该成员的类名;例如在类名为 Tstu的类中定义了一名为s整型静态数据成员,则初始化格式为摘要:int Tstu摘要:摘要:s =0;
(三)静态数据成员的引用实,转自[好又多论文网]例
#include
class Tstu//类的说明;
{public摘要://定义二个成员函数;
Tstuint a,int b; //定义构造函数,用来对数据成员赋初值;
bb ;
private摘要:
int x,y;//定义二个数据成员;
static int s;};//定义一个静态的数据成员,类Tstu定义结束;
int Tstu摘要:摘要:s=0; //静态数据成员的赋值;
Tstu摘要:摘要:Tstuint a,int b//构造函数的实现部分;
{ x=a;y=b;}
void Tstu摘要:摘要:bb //成员函数的实现部分;
{s=s+x+y;cout%26lt;%26lt;”s=”%26lt; void main //主函数;
{Tstu t110,20,t25,3;
t1.bb ;t2.bb ;}
对于以上的程序,类Tstu中的t1对象调用成员函数bb 之后,静态数据成员s中的值是30,那么对象t2在调用前,对于对象t2,s中的值已是30,由于s中的值是每个对象所共享的,t2对象调用后,s中最后的值是38。
我们再来看以下代码摘要:
#include
class Ta{
public摘要:
Ta{n++; } //定义构造函数,当定义对象时n的值自动加1;
~Ta{n--; } //定义析构函数,开释对象时n的值自动减1;
int sum{return n; }//成员函数sum 用来返回静态数据成员n的值;
private摘要:
static int n;};
int Ta摘要:摘要:n = 0;
当创建该类对象实体时,由于n为所有对象所共享的数据,从而可以统计当前创建的所有对象的数目。这一技巧可以运用到很多方面,如对象实体的互斥关系,引用计数等相关方面。C++类中的静态成员有一个非常好的功能,那就是无论类定义了多少个对象,这些对象始终都共同使用这一个静态成员,在使用时需要注重的是类静态数据成员除了在类中形式说明之外,必须在使用前在对象说明之外作定义性说明,主要是为了给类中静态数据成员分配内存。通过这个实例可更加清楚的解述静态数据成员在类中实现数据的方法、功能。
二、静态成员函数的应用
静态成员函数和静态成员的特性相似,属于类的成员,不是对象的成员。在静态成员函数的实现中,可以直接引中类中说明的静态成员。下面通过具体的实例说明静态成员函数的应用。
本文出自: