全局的static的目的,一个是封装,一个是私有的名字空间。在大型框架软件是常用的。
局部的static是为了变量的永久生命期。可能是线程不安全的。
写框架时,你不知道什么应用程序在和你合作,也不知道你的全局变量与别人的什么对象重名,同样别人在使用你的框架时也不知道你使用了什么全局变量。因此与外界无关的变量必须定义为siatic。与外界有关的全局变量必须在头文件中声明。这是保证程序稳定性的基本手段
打个比方,多人合作的项目,当项目已经按模块划分好了。你去写某个函数的实现,可能在其中你会用到一些只有自己才会调用的函数,那么提交的时候你应该把其他那些对内变量、接口都static了,除非你自己也跨文件了,以防大家冲突。这是很好的防冲突手段,为什么不用呢?
static经常用于大型程序中的各个模块中的全局性变量,如数据库连接句柄、某资源句柄、或是你程序中自定义的一套东西,一般仿面向对象的手法写一套get/set函数,此时可以在这些全局变量前加static来隐藏其全局性,防止误改写。
其实C++里头的namespace可以说是对static的一种改良,C的符号scope是不是全局就是局部特性,一般用static区别这两种scope。
阅读(1259) | 评论(0) | 转发(1) |