关键字:namespace
作用:通过命名空间来控制对名字的访问,避免发生命名冲突,可以更好地控制标识符的作用域。
eg1:创建一个命名空间
//创建一个命名空间
namespace A{
int a = 10;
}
注意:命名空间只能全局范围内定义!!!
eg2:命名空间可嵌套命名空间
//嵌套命名空间
namespace A{
int a = 10;
namespace B{
int a = 20
}
}
eg3:命名空间可随时添加新成员
//添加新成员到已创建的命名空间
namespace A{
int a = 10;
}
namespace A{
void fun(){
cout << "我是新成员!!!" << endl;
}
}
eg4:命名空间中的成员函数声明和实现相互分离
//命名空间中的成员函数的声明和实现可分离
namespace Myspace{
void fun1();
void fun2(int param);
}
void Myspace::fun1(){
cout<<"Myspace::fun1"<<endl;
}
void Myspace::fun2(int param){
cout<<"Myspace::fun2"<<endl;
}
eg5:没有命名空间,意味着命名空间中的标识符只能在本文件中访问,相当于给这个标识符加上了一个static,使得其可以作为内部链接。
//无命名空间
namespace{
int a=10;
void func()
{
cout<<"hello namespace"<<endl;
}
}
void test()
{
cout<<"a:"<<a<<endl;
fun();
}
eg6:命名空间别名
//命名空间别名
namespace A{
int a=10;
void fun()
{
cout<<"A"<<endl;
}
}
void test()
{
namespace B=A;
cout<<"A::a"<<B::a<<endl;
A::fun();
B::fun();
}