C++ static 修饰全局变量时的作用探究
作为一个c++开发者,我们面试时经常被问到 static 变量的作用,其中有一个问题是,static 修饰全局变量时起什么作用。
通常我们会回答,“static 修饰全局变量时代表限制这个变量为此源文件可见,其他源文件无法访问到这个变量“。
但是之前我更多的是认为重点在于限制作用域,今天的一个小实验让我对它有了更深入的体会。
这里先问一个问题。
如果我们 在 某个头文件中声明一个 static 变量,然后用两个 source file 来引用它,可以做到共享全局变量通信吗?换句话说,某个 cpp 文件改动了它的值,另一个cpp能感知到吗?
答案是不会,实验表明,每一个源文件单独有一份属于自己的static 变量,所以一个源文件的更改不会影响到另一个源文件,这正是面试八股文里 “限制变量为本源文件可见的真正含义”。
- 头文件 schema.h
#ifndef __SCHEMA__
#defi