我有一个需求,需要在一个由多个类组成的cpp文件中始终可用一个(const)变量。我决定使用命名空间来解决这个问题,但是以下内容让我不确定: 我需要将此变量定义为静态变量吗? 如果我选择匿名命名空间,是否可以避免将变量定义为静态变量?
您不需要将变量定义为静态变量或匿名命名空间中的变量。但是,如果您在定义该对象后不在文件外使用它,则建议这样做,以减少命名空间污染并加快链接速度(通过减少链接器需要考虑的符号数量)。 如果您在匿名命名空间中声明变量,则它将有效地成为静态变量。实际上,也没有必要将其设置为静态变量(尽管您可以这样做)。匿名命名空间的优点是您还可以定义类型(类、结构、枚举、typedef)以及静态变量和函数。