static 函数

来源:互联网 发布:破解版java 游戏 编辑:程序博客网 时间:2024/05/17 07:14

今天看代码的时候看见如下形式:

 

以为返回的是一个static值,后来才知道原来是声明该函数是个static类型的函数,意义为该函数只能在本文件之内使用。后来又进一步看了一下static关键字的用法,现在自己总结一下,希望能对记忆有帮助。
static的用法有两种,分为面向过程的用法和面向对象的用法。上面我所遇到的问题即为面向过程的用法。

面向过程的static用法:
1.静态全局变量:静态全局变量存储在内存的全局数据区,其作用域仅仅为定义该变量的文件(因为这一条,其他文件可以定义相同名字的变量),它会被自动初始化为0;
2.静态局部变量:静态局部变量同样存储在内存的全局数据区,直到程序运行结束。它的作用域为定义该变量的函数。当函数结束的时候,变量的作用域随之结束,但是变量仍然在全局数据区。如果函数再次运行,仍能访问该变量。它仅仅在声明的时候被初始化,然后再不初始化。
3.静态函数:上面已经叙述。

面向对象的static用法:
1.静态数据成员:静态数据成员不属于任何一个对象,所有该类的对象共享该成员。静态数据成员存储在全局数据区,定义的要分配空间。所以不能在类的声明中定义,只能放在类的外面定义,但是可以在类的里面声明。静态数据成员同样遵循public,protect,private访问规则。
2.静态成员函数:静态成员函数和静态数据成员一样,不属于任何一个对象,属于类定义的一部分。普通函数都隐含了一个this指针,this指针指向对象本身。但是静态成员函数不含this指针,从这个意义上讲,静态成员函数不能访问属于对象的非静态数据成员,也不能访问非静态函数,它只能调用其他静态函数。但是非静态成员却能访问静态成员。静态成员函数没有this指针的额外开销,速度上稍微快一些。

原创粉丝点击