静态属性不是类中每个对象拥有的,而是共有的。由于静态成员逃离了对象而存在的性质,所以该实体应该在所有对象产生之前产生,更适合的时机是在程序启动的时候做初始化。初始化时候不可重复上static,但是要加上类名空间。该实体在程序中的唯一性,要求他不可以和类的定义放在头文件中,但是它确实是类的成员,所以放在类实现中最合适。如下:
//--------------------Student.h ---类定义的文件
class Student{
private:
static int num;
}
//-------------------Student.cpp---内实现的文件
#include"Student.h"
Student::number=0;
由于静态数据成员不属于任何一个对象,为了安全起见将静态数据成员定义为私有的,于是如何去访问它呢?同样的可以定义静态成员函数来访问它,用静态成员函数去访问静态数据是最合适不过的,在类中声明静态成员函数,要在成员函数前加上static关键字,可以用对象来调用他,也可以用雷明加域操作符来调用。静态成员函数实现部位应该和成员函数位置相同,在类外部实现时要免去static,但是域操作符是必须的。
//--------------------Student.h ---类定义的文件
class Student{
private:
static int num;
public:
static void Print();
}
//-------------------Student.cpp---内实现的文件
#include"Student.h"
Student::number=0;
void Student::Print(){
cout<<num++<<endl;
}