一个工程越大,不同程序员所定义或声明的符号常量、变量、函数、结构体、枚举、类和对象等,名称互相冲突的可能性就越大。另外,在使用不同厂商的类库时,也可能导致名称冲突。为了避免这种情况,C++引入关键字namespace,用来控制标识符的作用域。
1.创建命名空间,命名空间只能在全局范围内定义
2.命名空间嵌套命名空间
3.命名空间时开放的,可以随时把心的成员加入已有的命名空间里
4.无命名空间,意味着命名空间中的标识符只能在本文件中访问,相当于给这个标识符加上了static,使得其作为内部链接
#include<iostream>
#include<cstdlib>
using namespace std;
namespace A
{
int a = 1;
}
namespace B
{
int a = 2;
}
namespace B//命名空间时开放的,可以随时把新的成员加入其中
{
int add = 5;
void fun()
{
cout << "B::add=" << B::add << endl;
}
}
namespace C//命名空间嵌套
{
namespace D
{
int c = 3;
}
}
void test()
{
cout << "A::a=" << A::a << endl;
cout << "B::a=" << B::a << endl;
cout << "C::D::c=" << C::D::c << endl;
B::fun();
namespace other = A;
cout << "other::a=" << other::a << endl;//命名空间的别名
}
int main()
{
test();
system("pause");
return 0;
}