C++-namespace
在命名空间后面添加::限制运算符可以取到对应的具体的命名空间的内容,用来解决命名的冲突
命名空间下可以放的内容
变量,函数,结构体,类等等都可以
命名空间必须要声明在全局作用域下
不可以命名在局部作用域如函数栈中
命名空间可以嵌套命名空间
#include<iostream>
using namespace std;
namespace A
{
int test_A = 10;
namespace B
{
int test_B = 11;
}
}
int main()
{
cout << A::test_A << A::B::test_B << endl;
return 0;
}
命名空间是开放的,可以随时添加,但是不允许重定义
#include<iostream>
using namespace std;
namespace A
{
int test_A1 = 10;
int test_A2 = 100;
namespace B
{
int test_B = 11;
}
}
namespace A
{
int test_A3 = 1000;
}
int main()
{
cout << A::test_A3;
return 0;
}
命名空间可以是匿名的
用匿名的命名空间来写,相当于写了一个全局变量
命名空间可以取别名
#include<iostream>
using namespace std;
namespace A
{
int test_A1 = 10;
int test_A2 = 100;
namespace B
{
int test_B = 11;
}
}
namespace A
{
int test_A3 = 1000;
}
int main()
{
namespace aa = A;
cout << aa::test_A3;
return 0;
}
using
using声明和编译指令。
using 声明
声明变量后,后面使用的就是该命名空间的变量。
#include<iostream>
using namespace std;
namespace A
{
int test_A1 = 10;
int test_A2 = 100;
int test_A3 = 111;
namespace B
{
int test_B = 11;
}
}
namespace B
{
int test_A3 = 1000;
}
void test01()
{
using B::test_A3;
cout << test_A3;
}
int main()
{
test01();
}
using编译指令
using namespace xxx;//表示使用某一个命名空间
using和参数重名
using编译指令和就近原则同在时先使用就近原则