using声明同其他声明的行为一样:它有一个域,它引入的名字从该声明开始直到其所
在的域结束都是可见的。using声明可以出现在全局域和任意名字空间中,同时它也可以出现
在局部域中。与其他声明一样,using声明引入的名字有以下特性:
(1)它在该域中必须惟一
(2)由外围域中的声明引入的相同名字被其隐藏
(3)它被嵌套域中的相同名字的声明隐藏
例如
namespace blip
{
int bi=16,bj=15,bk=23;
//其他声明
}
int bj=0;
void manip()
{
using blip::bi; //函数manip()中的bi指向blip::bi
++bi; //设置blip:: bi为17
using blip::bj; //隐藏全局域中的bj
//在函数manip()中的bj指向blip::bj
++bj; //设置blip::bj为16
int bk; //bk在局部域中声明
using blip::bk; //错误:在manip()中重复定义bk
}
int wrongInit=bk; //错误:bk在这里不可见应该用blip::bk