C++中类的静态成员与实例成员的区别
在C++类中,由static定义的(静态)数据成员 和 (静态)函数成员属于类;相反没有被static定义的成员和函数称为实例数据成员和实例函数成员,他们属于某一个实例(对象)。
在内存中,类的静态数据成员占有一块特定的内存空间,被该类的所有实例(对象)共享。而同一个类的不同对象的实例数据成员相互独立,占有各自的存储空间。
定义类后,必须在类外的文件作用域中定义静态数据成员,即为它们分配存储空间。
在程序中可以直接使用类名和域解析操作符::直接访问类的共有静态数据成员和共有函数成员,不能直接访问类的私有成员。
不能在类的构造函数中初始化静态数据成员,因为静态数据成员不属于某一个具体的类。
在类的静态函数成员中,只能访问类的静态数据成员,而不能访问类的实例数据成员,因为在调用静态函数成员时,可能还没有创建类的具体实例(对象)。