static的用法

面向对象的static

静态数据成员:在类内数据成员的声明前加static,即声明类内静态数据成员。
  1. 非静态成员每个对象都有自己的拷贝。而静态数据成员在程序中只有一份拷贝,由该类的所有对象共享。但其不属于特定的类,在没有任何类实例时就可以操纵它。
  2. 存储在全局数据区。由于定义时要分配空间,所以不能在类声明中初始化。在类外初始化,初始化时不需要再加static关键字。格式为:<数据类型> <类名>::<静态数据名> = <值>
  3. 虽然同样遵循public、protected、private的访问权限,但不能在类外被访问。访问静态成员有两种格式:<类对象名>.<静态成员名>;如果静态成员为public,可以<类名>::<静态数据名>
  4. 静态数据成员主要用在各个对象都有相同的某项属性时。一是可以节省存储空间,二是在需要修改时,只需要修改一处即可。比如存款类中的利息。
  5. 同全局变量相比,静态数据成员有两个好处。一是没有进入程序的全局命名空间,不会和其他全局变量造成冲突;二是可以实现信息隐藏,可以定义为private,而全局变量不能。
静态成员函数

与静态数据成员类似,静态成员函数不是为类中某个具体的对象服务,是为类的全部服务。

  1. 普通成员函数内部缺省的隐藏了指向对象本身的this指针,而静态成员函数没有this指针。因此它不能访问类对象的非静态数据成员和非静态成员函数,只能调用静态成员函数。
  2. 静态成员之间可以互相访问,包括静态数据成员和静态成员函数。
  3. 由于没有this指针的额外开销,其速度与类的全局函数相比有少许提升。
  4. 类的对象可以用.或->直接调用静态成员函数,也可以在没有类对象时访问:<类名>::<成员函数名>(<参数表>)
posted @ 2014-09-26 11:43  sdwvskyo  阅读(128)  评论(0编辑  收藏  举报