跳转到内容

C++ 编程

来自 Wikibooks,开放世界中的开放书籍

命名空间关键字允许你创建一个新的作用域。名称是可选的,可以省略以创建一个匿名命名空间。创建了命名空间后,你必须显式地引用它或使用using关键字。命名空间用命名空间块定义。

语法
    namespace name {
    declaration-list;
    }

在许多编程语言中,命名空间标识符的上下文。C++ 可以处理语言中的多个命名空间。通过使用命名空间(或using namespace关键字),它提供了一种干净的方式将代码聚合到一个共享的标签下,以防止命名冲突或仅仅为了便于回忆和使用非常特定的范围。除了“命名空间”之外还有其他“命名空间”;这可能令人困惑。

命名空间(注意这里有空格),正如我们将看到的,它超越了作用域的概念,提供了一种简便的方法来区分正在调用/使用的内容。正如我们将看到的,类也是命名空间,但它们不是命名空间。

注意
仅在方便或实际需要时使用命名空间,例如聚合相关代码,不要以使代码对你和其他人过于复杂的方式使用它

示例
namespace foo {
  int bar;
}

在这个块中,标识符可以使用声明的完全相同的方式。在这个块之外,必须添加命名空间说明符(即,它必须被限定)。例如,在命名空间 foo之外,bar必须写成foo::bar

C++ 包含另一个构造,它使得这种冗长不再需要。通过在代码中添加一行using namespace foo;,不再需要前缀foo::

匿名命名空间
[编辑 | 编辑源代码]

没有名称的命名空间称为匿名命名空间。对于这样的命名空间,将为每个翻译单元生成一个唯一的名称。无法将using关键字应用于匿名命名空间,因此匿名命名空间的行为就好像已经将using关键字应用于它一样。

语法
    namespace {
    declaration-list;
    }
命名空间别名
[编辑 | 编辑源代码]

你可以为命名空间(包括嵌套命名空间)创建新名称(别名)。

语法
   namespace identifier = namespace-specifier;

华夏公益教科书