Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1093211
  • 博文数量: 242
  • 博客积分: 10209
  • 博客等级: 上将
  • 技术积分: 3028
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-12 09:27
文章分类

全部博文(242)

文章存档

2014年(1)

2013年(1)

2010年(51)

2009年(65)

2008年(124)

我的朋友

分类: C/C++

2009-10-11 11:07:50


使用类的 static 成员的优点:
1. static 成员的名字是在类的作用域中,因此可以避免与其他类的成员或全局对象名字冲突.
2. 可以实施封装。static 成员可以是私有成员,而全局对象不可以.
3. 通过阅读程序容易看出 static 成员是与特定类关联的,可清晰地显示程序员的意图.

static数据成员:

static 数据成员独立于该类的任意对象而存在;每个 static 数据成员是与类关联的对象,并不与该类的对象相关联.对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共享访问。静态数据成员在全局数据区分配内存,在没有产生类对象时其作用域就可见,因此在没有产生类的实例时,我们就可以操作它。

1.static 数据成员必须在类定义体的外部定义(正好一次),static 关键字只能用于类定义体内部的声明中,定义不能标示为 static. 不像普通数据成员,static 成员不是通过类构造函数进行初始化,也不能在类的声明中初始化,而是应该在定义时进行初始化.保证对象正好定义一次的最好办法,就是将 static 数据成员的定义放在包含类非内联成员函数定义的文件中.

   静态数据成员初始化的格式为:
      <数据类型><类名>::<静态数据成员名>=<值>
2.类的静态数据成员有两种访问形式:
      <类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>
3.静态数据成员主要用在各个对象都有相同的某项属性的时候。比如对于一个存款类,每个实例的利息都是相同的。所以,应该把利息设为存款类的静态数据成员。这有两个好处,第一,不管定义多少个存款类对象,利息数据成员都共享分配在全局数据区的内存,所以节省存储空间。第二,一旦利息需要改变时,只要改变一次,则所有存款类对象的利息全改变过来了;静态数据成员主要用于a.保存对象个数; b.作为一个标记,标记一些动作是否发生,比如文件的打开状态、打印机的使用状态; c.存储链表的第一个或最后一个成员的内存地址。
4.同全局变量相比,使用静态数据成员有两个优势:
   a. 静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性;
   b. 可以实现信息隐藏。静态数据成员可以是private成员,而全局变量不能;


static 成员函数:

static 成员函数没有 this 形参,它可以直接访问所属类的 static 成员,但不能直接使用非 static 成员.访问非静态数据成员,必须通过参数传递方式得到对象名,然后通过对象名来访问。可以看到,通过静态函数成员访问非静态成员使相当麻烦的,一般的使用中,它主要用来访问全局变量或同一个类中的静态数据成员,特别是和后者一起使用,达到对同一个类中对象之间共享的数据进行维护的目的。

阅读(1936) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~