代码改变世界

C++静态数据成员和静态成员函数

2011-12-03 13:35  捣乱小子  阅读(973)  评论(0编辑  收藏  举报

在C++面向对象编程过程当中,对象与对象之间的数据不是共享,在设计类的时候,有时候需要一些对象之间共享的数据,除了把所要共享的数据设置为全局数据或者函数之外,还可以利用C++的静态机制。

1、静态数据成员

class 类名  
 {  
 ……  
 static 类型说明符 成员名;  
 ……  
 };

 静态数据成员是所有对象共享的,其所占的内存空间不会因为某个对象的产生而分配,也不会因为对象的销毁而消失。跟类中其他的非静态数据成员一样,被定义为private时,不能被外界访问。但是可以被类内任意访问权限的函数访问。

关于静态数据成员的初始化:非静态成员可以在构造函数当中初始化,但是static不能在构造函数当中初始化,它的初始化,只能存在于全局区域,并且要指明是什么类的静态成员,可以用作用域符号“::”来指明。

类名::静态数据成员

就这么简单。

当声明为public时候,可以被直接访问,修改而不通过静态成员函数。

2、静态成员函数

class 类名  
 {  
 …  
 static 类型 函数名(形参)  
 { 函数体 }  
 …  
 };

静态成员函数当中不能访问任何权限的非静态数据成员,换句话说它只能访问static。在类外部调用静态成员函数的时候,不是简单的

对象.静态成员函数

这是普通成员函数的做法,

类名::静态成员函数