从文体的角度来看,这可能会,也可能不会,没关系,但风格是主观的。
从技术角度来看,也有一些差异:
+----------------+-------------+
| Private Static | File Static |
+----------------------------+----------------+-------------+
| Visible by includers | Yes | No |
+----------------------------+----------------+-------------+
| Accessible to friend | Yes | No |
+----------------------------+----------------+-------------+
| Accessible to all in TU* | No | Yes |
+----------------------------+----------------+-------------+
| Require #include in header | Yes | No |
+----------------------------+----------------+-------------+
*TU: Translation Unit (roughly put: the source file after include resolution)
技术上,因此,在文件范围(或在一个匿名命名空间变量)一个static
变量可以是更私人除了它在源文件中遵循它的所有代码都可见(它会稍微改变可访问性)。
我个人比较喜欢他们那些客观的原因。我倾向于保持我的标题尽可能空,因为它使更改对客户端没有任何影响(我大部分时间都是客户端!)
注意:如果我忘记了区别,请执行告诉/编辑
澄清:您是否在使用*静态全局变量*在私有静态成员变量*上有优势? – 2011-03-28 18:20:00
在'.cpp'文件中通过类的'.h'中声明的私有静态变量声明的静态全局变量 – Samaursa 2011-03-28 18:21:31
* .cpp文件中的非静态全局变量将比静态全局变量,因为它可能与具有相同名称的另一个标识符与另一个文件发生冲突。 – aschepler 2011-03-28 18:30:20