namespace 命名空间名
{
//一系列声明与定义
};
//例
namespace mySpace
{
int a=1;
void fun();//声明函数
namespace ns //命名空间的嵌套
{
};
};
void mySpace::fun() //定义函数要带上命名空间作用域限定符
{
cout<<"mySpace";
}
//声明mySpace命名空间,空间内所有代码都可使用
using namespace mySpace;
//声明mySpace命名空间内的fun函数,只有fun函数可供外界使用
using namespace mySpace::fun;
//声明mySpace命名空间内的ns命名空间,只有ns命名空间可供外界使用
using namespace mySpace::ns;
using namespace mySpace;
int main()
{
cout<<a;
cout<<mySpace::a;
fun();
mySpace::fun();
return 0;
}
namespace ns1
{
int a=1;
}
namespace ns2
{
int a=2;
}
using namespace::ns1;
using namespace::ns2;
int main()
{
cout<<a;//错误,产生二义性
cout<<ns1::a;//1
cout<<ns2::a;//2
}
namespace ns1
{
int a=1;
}
using namespace::ns1;
int a=2;
int main()
{
cout<<a;//错误,产生二义性
cout<<::a; //打印全局变量
cout<<ns1::a;
}
namespace ns1
{
int a=1;
}
using namespace::ns1;
int main()
{
int a=2;
cout<<a; //2
cout<<::a;//1
cout<<ns1::a;//1
}
namespace
{
int a=1;
void fun();
}
namespace ns1
{
int a=1;
};
namespace ns2=ns1;//取别名
using namespace ns2;//实质就是对ns1的声明
namespce A
{
int i,j;
}
using namespace A;//using指示
using A::i;//using声明
using A::j;//using声明
//例如我们使用命名空间std的cout和cin。不要直接使用using namespace std;
#include<iostream>
using std::cout;
using std::cin;
using NS::print;//正确
using NS::print(int);//错误,不能指定参数列表
namespace NS
{
extern void print(int);
extern void print(double);
}
void print(const std::string&);
using namespace NS;
int main()
{
print("Hello");//调用全局函数
print(10);//调用命名空间NS的
}