C++不同命名空间下的名称查找法则
时间: 2023-11-28 12:49:51 浏览: 124
在 C++ 中,名称查找的规则取决于名称所在的命名空间。如果名称位于全局命名空间中,则会按照以下顺序查找:
1. 当前作用域中的名称
2. 外部链接性的名称
3. 全局命名空间中的名称
如果名称位于命名空间中,则会按照以下顺序查找:
1. 当前作用域中的名称
2. 命名空间中的名称
3. 外部链接性的名称
4. 全局命名空间中的名称
在名称查找期间,如果找到了同名的名称,但是其声明在不同的命名空间中,则可以通过使用作用域解析运算符(::)来访问特定的名称。例如:
```
namespace A {
int x;
}
namespace B {
int x;
}
int main() {
A::x = 1;
B::x = 2;
std::cout << A::x << std::endl; // 输出 1
std::cout << B::x << std::endl; // 输出 2
return 0;
}
```
在上面的示例中,我们分别在命名空间 A 和 B 中定义了名为 x 的变量,并在 main 函数中对其进行赋值和输出。由于名称 x 存在于不同的命名空间中,因此我们必须使用作用域解析运算符来访问这些变量。
阅读全文