隐藏、持久、默认0、
static的根本特征是隐藏。
由于static修饰的变量全部处于静态数据区,所有会被初始化为0。
修饰全局变量/函数
- 将变量或函数隐藏在
.o
文件中,使其在链接时不被其他.o
所使用。
这是在.o
文件之间进行隐藏。
修饰局部变量
- 使得变量具有全局生命周期,局部变量保存在静态数据区。
可以理解为这是在函数之间进行变量隐藏,一个全局变量,加了static
,写在函数内,就只有此函数可以访问这个全局变量。
C++面向对象
对于C++面向对象的每一个特性,我们都应该想到类与对象的关系,父与子的关系。
修饰成员变量
static修饰的成员变量必须在外部被初始化,尤其注意.h
文件一般仅保存定义而不保存声明,也就是不能保存数据实体,因此应当将static成员变量的初始化代码放置在.c/.cpp
中。
初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆,不加该成员的访问权限控制符private、public,使用作用域运算符来标明它所属类;
静态数据成员初始化的格式:
<数据类型><类名>::<静态数据成员名>=<值>
类与对象中static的关系
共用
父子中static的关系
可覆盖
修饰成员函数
没有this指针,不可访问非static的成员变量
类与对象中static的关系
共用
父子中static的关系
可覆盖