static 的作用
非类中
1) 隐藏
修饰对象: 全局变量 和 函数
编译多个源文件添加static 使其作用域 限定在 当前源文件
带来一个好处: 不必担心命名冲突
2)默认初始化为0
对象: 未初始化全局变量(BSS 段 默认初始化本来就是 0) 和 局部变量
3) 改变静态局部变量的生存周期
生命周期为整个源程序
静态局部变量储存位置为 (全局区)DATA or BSS
只初始化一次
类中
c++ 重用了static 关键字
1) 静态数据成员
独立于该类的对象, 属于整个类(换言之 每个类都有之)
2)静态成员函数
与普通成员函数相比, 静态成员函数不与任何对象关联
不具有this 指针
无法访问属于对象的非静态数据成员,也无法访问非静态成员函数。
内存分区
1)堆
2)栈
3)全局储存区(DATA , BSS)
4)文字常量区
5)程序代码区
----------------
摘录一下muduo一书的内容:
c语言static 关键字的用法
1: 用于修饰内部变量,即函数内静态变量。 变量生存周期周期长于该函数,使得函数具有一定“状态”。使用静态变量的函数一般是不可重入的,也不是线程安全的,比如strtok(3);
2: 用在文件级别(函数体)之外),修饰变量或函数,表示该函数活变量在本文件可见,其他文件看不到、也访问补刀该变量或函数。
c++ 语言的static 关键字的四种用法
c++引入class类,在保持与C语言兼容的同时,static关键字有有了两种新用法
3:用于修饰class的数据成员,即所谓“静态成员”。这种成员的生存周期大于class对象(instance),静态数据成员每一个类有一份,普通数据成员每一个instance有一份。
4:用于修饰class成员函数,即所谓“静态成员函数”。这种成员函数智能访问class variable 和其他静态成员程序函数, 不能访问instance vairable 或instance method.

浙公网安备 33010602011771号