static作用整理

来源:互联网 发布:淘宝老a工具箱 编辑:程序博客网 时间:2024/06/10 02:15

一、static的作用

1、函数体内,一个被声明为static的变量在函数被调用过程中维持其值不变。

2、在模块内(但在函数体外),一个被声明为static的变量可被模块内的所有函数访问,但不能被模块外的函数访问。他是一个本地全局变量。

3、在模块内,一个被声明成static的函数只可被本模块的函数调用。


二、static变量及函数与普通变量及函数的区别

1、static全局变量与普通全局变量的区别是,static全局变量只初始化一次,防止在其他文件中被引用。

2、static局部变量和普通局部变量的区别是,static局部变量只被初始化一次,下一次依据上一次的结果。

3、static函数与普通函数的区别是,static函数在内存中只有一份,普通函数在每一个被调用中维持一份复制品。


三、注意

类中的静态成员和方法不属于类的实例,是属于类本身,并在所有类的实例间共享。在调用它们时应该用类名加上“::”来引用。

1、类中的static变量需要在内外进行初始化。

2、类中的static函数不能通过this指针进行访问,所以导致静态成员函数不能调用类的非静态成员。

3、局部静态对象的生命期是从其所在函数第一次被调用,更确切地说,是当第一次执行到该静态对象的声明代码时,产生该静态局部对象,直到整个程序结束时,才销毁该对象。

4、还有一种静态对象,那就是它作为class的静态成员。考虑这种情况时,就牵涉了一些较复杂的问题。

  第一个问题是class的静态成员对象的生命期,class的静态成员对象随着第一个class object的产生而产生,在整个程序结束时消亡。也就是有这样的情况存在,在程序中我们定义了一个class,该类中有一个静态对象作为成员,但是在程序执行过程中,如果我们没有创建任何一个该class object,那么也就不会产生该class所包含的那个静态对象。还有,如果创建了多个class object,那么所有这些object都共享那个静态对象成员。对于类的静态成员,基类及其派生类的所有对象都共享这个静态成员对象,所以当需要在这些class之间或这些class objects之间进行数据共享或通信时,这样的静态成员无疑是很好的选择。



0 0
原创粉丝点击