一、静态数据成员
一般来说,如果只声明了类而未定义对象,则类的一般数据成员是不占内存空间的,只有在定义对象时,才为对象的数据成员分配空间。但是静态数据成员不属于某一个对象,在为对象所分配的空间中不包括静态数据成员所占的空间。静态数据成员是在所有对象之外单独开辟空间。只要在类中定义了静态数据成员,即使不定义对象也为静态数据成员分配空间,它可以被引用。-------在一个类中,可以有一个或多个静态数据成员,所有的对象共享这些静态数据成员,都可以引用它。
静态数据成员的生存周期:在程序编译时被分配空间的,到程序结束时才释放空间。
静态数据成员初始化:只能在类外初始化。一般形式:数据类型 类名::静态数据成员名 = 初值;注:不能用参数初始化表对静态数据成员初始化。
静态数据成员引用:可以通过对象名引用,也可以通过类名来引用。
静态数据成员被定义为私有:则不能再类外引用,只能通过公用的成员函数引用。
静态数据成员与全局变量的不同:静态数据成员的作用域只限于定义该类的作用域内。
二、静态成员函数
同静态数据成员一样,静态成员函数也是属于类的一部分而不属于对象的一部分。
静态成员函数作用:静态成员函数的作用为了能处理静态数据成员。而不能访问非静态数据成员。
静态成员函数没有this指针,所以静态成员函数不能访问本类中的非静态成员。(因为没有this指针,那么就不知道它指向某一对象,就无法对一个对象中的非静态成员进行默认访问)。除非在静态成员函数里指定是哪个对象的。但一般没有这么做。静态成员函数仅只是为了访问静态数据成员而生的。