最近碰到一些关于static 的问题,今天就查资料总结了一下。 主要有5类,分为面向过程和面向象两种:
1. 作为静态的局部变量。(最重要)
2. 作为静态的全局变量。
3. 作为静态函数。
4. 作为静态数据成员。
5. 作为静态成员函数。
第1种: 作为静态的局部变量。 这种方式相当于定义了一个全局变量, 但是作用域只限于函数内部。 优点是可以在函数运行结束时保持其变量不变。
第2种: 作为静态的全局变量。 这个基本和全局变量一样。只有两点区别: 1是不能被其它文件访问;2是可以有和这个静态全局变量同名的变量。
第3种: 作为静态的全局函数。 它和一般函数的区别: 1是不能被其它文件访问
第4种: 作为静态的类的数据成员。它被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共享访问。也就是说,静态数据成员是该类的所有对象所共有的。所以在一个对象中被修改过后,在另一个对象中这个“静态的类的数据成员”是被前面对象修改后的值。
第5种: 作为静态的类的成员函数。1静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数2非静态成员函数可以任意地访问静态成员函数和静态数据成员; 3静态成员函数不能访问非静态成员函数和非静态数据成员;