#include <iostream.h>
class MyClass
{
public:
static int i;
};
void main()
{
MyClass cls1;
MyClass cls2;
cls2.i=1;
cout<<"cls1.i="<<cls1.i<<"cls2.i"<<cls2.i<<endl;
cls2.i=2;
cout<<"cls1.i="<<cls1.i<<"cls2.i"<<cls2.i<<endl;
}
上面的程序的运行结果如下:
cls1.i=1 cls2.i=1
cls1.i=2 cls2.i=2
这就是静态数据成员和非静态数据成员的一个极大不同之处。对于同一类的所有实例对象,C++只为它们维护了一份静态变量的拷贝,通过每一个对象对这些静态变量进行操作,事实上,都是对同一个数据区进行操作。这就可以解释上面的运行结果了,无论我们使用表达式cls1.i还是表达式cls2.i,它们都是对同一个i进行操作,很自然,使用表达式cls1.i修改了静态成员i的值,表达式cls2.i的值会立即反映所作的修改。