C++ 编程
外观
命名空间关键字允许你创建一个新的作用域。名称是可选的,可以省略以创建一个匿名命名空间。创建了命名空间
后,你必须显式地引用它或使用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;