命名空间
最后更新于:2022-04-02 02:06:41
[TOC]
## 概述
名字空间除了系统定义的名字空间之外,还可以自己定义
使用名字空间时用符号`::`指定。
* 不指定名字空间的变量或函数都是当前名字空间下的变量或函数。
* 不定义名字空间的情况下,都属于**全局名字空间**。
* 同一个名字空间可以定义多次
## 命名实例
using namespace std;
namespace na
{
void print(int n) { //与名字空间nb的函数名相同
cout << "na::print: " << n << endl;
}
}
namespace nb
{
void print(int n) { //与名字空间na的函数名相同
cout << "nb::print: " << n << endl;
}
}
namespace na // 同一个名字空间可以定义多次
{
void print2(int a, int b) {
print(a);
print(b);
}
}
int main ( )
{
na::print(3); // 指定na下的print函数
nb::print(4); // 指定na下的print函数
na::print2(5, 6); // 指定na下的print2函数
return 0;
}
```
## using 可省略命名空间 使用“using namespace”可以使得后面不需要每次指定名字空间 如 ``` using namespace std; cout<< "hello" //等价于 std::cout << "hello" ``` ## 用别名指定名字空间 ``` namespace A = na::nb::nc; int main ( ) { cout << na::nb::nc::sum(5, 11) << endl; cout << A::sum(6, 12) << endl; return 0; } ``` ## 没有名字的名字空间 ``` namespace na { namespace { //无名名字空间 int sum(int a, int b) { return a + b; } } int calc(int x, int y) { return sum(x, y); //内部可以调用无名名字空间的变量或函数 } } ``` 外部无法调用 sum
';
main.
``` #include## using 可省略命名空间 使用“using namespace”可以使得后面不需要每次指定名字空间 如 ``` using namespace std; cout<< "hello" //等价于 std::cout << "hello" ``` ## 用别名指定名字空间 ``` namespace A = na::nb::nc; int main ( ) { cout << na::nb::nc::sum(5, 11) << endl; cout << A::sum(6, 12) << endl; return 0; } ``` ## 没有名字的名字空间 ``` namespace na { namespace { //无名名字空间 int sum(int a, int b) { return a + b; } } int calc(int x, int y) { return sum(x, y); //内部可以调用无名名字空间的变量或函数 } } ``` 外部无法调用 sum