匿名名字空间
在 .cc 文件中, 允许甚至鼓励使用匿名名字空间, 以避免运行时的命名冲突:
namespace { // .cc 文件中
//...// 使用本名字空间内的符号 EOF
} // namespace
然而, 与特定类关联的文件作用域声明在该类中被声明为类型, 静态数据成员或静态成员函数, 而不是匿名名字空间的成员....定义在同一编译单元的函数, 被其他编译单元直接调用可能会引入不必要的耦合和链接时依赖; 静态成员函数对此尤其敏感. 可以考虑提取到新类中, 或者将函数置于独立库的名字空间内....如果你必须定义非成员函数, 又只是在 .cc 文件中使用它, 可使用匿名 namespaces`或 “static` 链接关键字 (如 static int Foo() {...})...译者 (YuleFox) 笔记
cc 中的匿名名字空间可避免命名冲突, 限定作用域, 避免直接使用 using 关键字污染命名空间;
嵌套类符合局部使用原则, 只是不能在其他头文件中前置声明, 尽量不要