命名空间使用
格式:
namespace 名称
{
方法
}
主要用途
用来解决命名冲突问题
注意
必须定义再全局作用域下
种类
1.命名空间可以嵌套命名空间
2.命名空间是开放的,可随时往原先的命名空间添加内容
3.无名/匿名命名空间
例如
namespace
{
int c=0;
int d=0;
}
匿名命名空间相当于 static c=0; static d=0;
只能再当前空间使用
4.命名空间可以起别名
namespace 别名= 已有空间名
using
using声明格式
例如:using KING ::nameID;
含义:以后只要用到变量nameID的地方都使用KING空间中定义的
注意
使用using声明要避免二义性(一个变量有2个含义)
二义性事例:
namespace KING
{
int nameID=10;
}
namespace GG
{
int nameID=20;
using KING :: nameID;//using 声明
cout<<”nameID=”<<nameID<<endl;//仍根据就近原则输出nameID=20 此时就产生了二异性
}
using 编译指令
using namespace KING;//打开命名空间 cout<<”nameID=”<<nameID<<endl;
注意也要避免二义性 就是打开了多个房间
例;
using namespace GG;
using namespace KING;
cout<<”nameID=”<<nameID<<endl;
此时就产生了二义性
解决方法:使用::双冒号作用域
using namespace GG;
using namespace KING;
cout<<”nameID=”<<GG::nameID<<endl;
cout<<”nameID=”<<KING::nameID<<endl;