您的位置:首页 > 其它

Static关键字总结

2015-06-15 21:24 253 查看
一-静态局部变量。

1.函数内的static变量的作用范围在该函数内,该变量只在内存中初始化一次,下次使用时依然维持以前的值,不再进行初始化的工作。因为static变量保存在全局数据区,而不是栈区,保持到下一次使用时依然有效。由于其保存在全局数据区,所以它的有效范围在局部函数内,但是生命周期却伴随着整个进程的生命周期的结束。



二-全局静态变量

1)未显示初始化的全局静态变量,系统会根据该静态全局变量的类型进行相应的默认初始化。



2)静态全局变量在声明它的整个文件是可见的,超出该文件的范围则是不可见的,既然是不可见,那么在另一个文件中则可以定义名字相同的变量。静态变量都保存在全局数据区。而全局非静态变量则是对整个工程而言是可以看见的,可以使用extern在外部文件中使用该全局变量。

三-静态函数

1) 其他文件中可以定义相同名字的函数,不会发生冲突。

2) 静态函数不能被其他文件所用。



四-静态成员变量

1)对于非静态数据成员,每个对象都有自己的一份拷贝。而静态成员变量无论定义了多少对象,其在程序中也只会有一份拷贝,也就是说所有的对象都可以访问该对象。

2)静态成员有普通成员变量的访问规则public,protected,private。

3)静态成员变量的初始化:

静态数据成员要在程序一开始运行时就必须存在。因为函数在程序运行中被调用,所以静态数据成员不能在任何函数内分配空间和初始化。这样,它的空间分配有三个可能的地方,一是作为类的外部接口的头文件,那里有类声明;二是类定义的内部实现,那里有类的成员函数定义;三是应用程序的main()函数前的全局数据声明和定义处。





五-静态成员函数

1)出现在类体外的函数定义不能指定关键字static;

2)静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;

3)非静态成员函数可以任意地访问静态成员函数和静态数据成员;

4)静态成员函数不能访问非静态成员函数和非静态数据成员;

5)由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;



优势

可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: