静态变量属于整个类,而不属于具体的某个对象。
它的初始化不能通过构造函数或者参数表的方式定义,否则会出现
error LNK2001: unresolved external symbol
静态变量的初始化必须在类外进行初始化
数据类型类名::静态数据成员名=初值;
静态变量的调用可以直接通过类名::变量调用 (前提共有),也可以通过对象名调用,虽然静态变量属于整个类
静态函数:
与静态数据成员不同,静态成员函数的作用不是为了对象之间的沟通,而是为了能处理静态数据成员。 我们知道,当调用一个对象的成员函数(非静态成员函数)时,系统会把该对象的起始地址赋给成员函数的this指针。而静态成员函数并不属于某一对象,它与任何对象都无关,因此静态成员函数没有this指针。既然它没有指向某一对象,就无法对一个对象中的非静态成员进行默认访问(即在引用数据成员时不指定对象名)。 可以说,静态成员函数与非静态成员函数的根本区别是:非静态成员函数有this指针,而静态成员函数没有this指针。由此决定了静态成员函数不能访问本类中的非静态成员。 静态成员函数可以直接引用本类中的静态数据成员,因为静态成员同样是属于类的,可以直接引用。在C++程序中,静态成员函数主要用来访问静态数据成员,而不访问非静态成员。