title:
aliases:
tags:
- cpp/编程规范
category:
- 方法
stars:
url:
creation-time: 2023-10-12 10:22
modification-time: 2023-10-12 10:57:47
[[Cpp]] 中给出了 using
声明和 using
编译指令来简化命名空间中对名称的使用。using
声明使特定的标识符可用,using
编译指令使整个名称空间可用。
一般来说,使用 using
声明比使用 using
编译指令更安全,这是由于它只导入指定的名称。如果该名称与局部名称发生冲突,编译器将发出指示。using
编译指令导入所有名称,包括可能并不需要的名称。如果与局部名称发生冲突,则局部名称将覆盖名称空间版本,而编译器并不会发出警告。另外,名称空间的开放性意味着名称空间的名称可能分散在多个地方,这使得难以准确知道添加了哪些名称。[1]
using
声明的示意
namespace Jill {
double bucket(double n) { ... }
double fetch;
struct Hill { ... };
}
char fetch;
int main() {
using Jill::fetch; // put fetch into local namespace
double fetch; // Error! Already have a local fetch
std::cin >> fetch; // read a value into Jill::fetch
std::cin >> ::fetch; // read a value into global fetch
...
}
上例中的 using Jill::fetch
在函数内部进行了 using
声明,那么在 main
函数中,fetch
就代表了 Jill::fetch
。
Reference
[[C++ Primer Plus(第6版)中文版]] Chap. 9 ↩︎