类的静态数据成员

 类的静态数据成员和普通的静态变量含义不同,它的意思是:在每一个类实例化时并不分配存储空间,而是该类的每个对象共享一个存储空间,并且该类的所有对象都可以直接访问该存储空间。其实它就是一个专门供这个类的对象使用的变量----如果你把它声明为private权限的话。
    在类中定义静态数据成员,只须在定义时在前面加上"static"。类的静态数据成员只能在类外进行初始化,若没有对其进行初始化,则自动被初始化为 0。在类外引用静态数据成员必须始终用类名::变量名的形式。静态数据成员可以用来统计创建了多少个这种对象。
举一个例子:
#include <iostream>
 using namespace std;
class AA
{
private:
     int a;
public:
    static int count; //定义类的静态成员
    AA(int aa=0) { a=aa; count++; }
//对于类的方法,如果是较简单的可以这样写以使程序紧凑
     int get_a( ) { return a; }
};

int AA::count=0; //在类外初始化

void main()
{
    cout<<"Count="<<AA::count<<endl;
    AA x(10),y(20);
    cout <<"x.a="<<x.get_a( )<<" Count="<<x.count<<endl;
cout <<"y.a="<<y.get_a( );
}

 我们还可以定义静态的函数,只需在声明函数时在前面加上static即可,但定义函数时就不用加上static了。使用静态函数时也需要"类名::静态成员函数名(参数表);"的形式。

 

posted on 2009-04-08 15:22  alon  阅读(532)  评论(1编辑  收藏  举报

导航