static关键字
全局变量
static 声明全局变量,不改变全局变量的存储位置与生命周期,仅改变全局变量的作用域,不被其他源文件通过 extern 调用。
局部变量
static 会将局部变量的存储位置更改为静态存储区,生命周期伴随程序运行的整个过程。
普通函数
普通函数不是类成员函数,使用 static 声明将限制函数的作用域,不被其他源文件通过 extern 调用;static 声明的函数在内存中仅存储一份拷贝。
一些优点:
- 避免了链接不同源文件时,发生变量名和函数名的冲突。
- 对 c 函数而言,对函数进行了信息屏蔽,只给当前文件的一些函数使用。
类 static 成员
static 使成员由”属于类对象“变为”属于类,不属于类对象“
数据成员
- static 的数据成员需要在类定义体外部进行定义
1 | class BOOK |
- 例外,当使用
const static时,可以在类定义体内初始化数据成员,但仍需要在类定义体外进行一次定义。
1 | class BOOK |
类成员函数
在类内部声明的 static 成员函数,在类定义体外部不需要重复指定 static 关键字。
static 成员函数不能被声明为 const。

