全部博文(124)
分类: C/C++
2010-06-10 15:16:00
类型 |
功能 |
全局静态变量 |
l 存储在静态区。 l 变量内容持久化:程序的整个运行期间一直占有,直至结束。用来存储保留值。 l 避免跨文件命名冲突: 只在文件内编译有效,可避免不同文件间的命名冲突。 l 跨文件的访问:在一个源文件里定义的static变量,在另一个源文件里不能再通过extern访问;如果要访问,则在第一个源文件中定义指向该静态变量的指针,在第二个源文件中使用extern引用该指针。 |
局部静态变量 |
l 变量内容持久化: 在下次调用该函数时可继续使用。(使用全局变量也可以,但全局变量众所周知是不被推荐的) |
静态函数 |
l 存储在静态区,直到退出应用程序实例。避免了调用函数时的压栈出栈,速度较快。 l 避免跨文件命名冲突: 只在文件内编译有效,可避免不同文件间的命名冲突。 |
静态成员变量 |
l 存储在静态区。 l 数据共享:所有类对象共享一份该成员变量(非静态成员变量在每个类对象中都有自己的拷贝。静态成员变量被当作是类的成员,在程序中也只有一份拷贝) l 遵从public/protected/private访问规则。 l 无须产生类对象,可直接操作该变量。使用A.staticV或者A::staticV访问。 l 不能在声明时同时进行定义。 |
静态方法 |
l 方法共享:所有类对象共享该方法(普通方法通过this指针指向自己所处对象,静态方法没有this指针)。使用A::staticFunc(para1,para2)访问。 l 只能访问【静态成员】(变量/函数):无法访问【普通成员】(变量/函数)。【普通成员】可以访问静态成员。 |
静态类 |
l 在C#、Java(内部类)、JS中的概念。不管如何定义,“静态”都包含“无法实例化、共享”之意。 |