using 声明:
using 命名空间::成员;
一次只引入命名空间中的1个成员。令名字在局部作用域有效,外层作用域的同名实体将被隐藏。
using 指示:
using namespace 命名空间;
使得某个特定的命名空间中名字都可见。令整个命名空间内容都有效,而通常命名空间中含有一些不能出现在局部作用域的定义,因此,using指示一般看作出现在最近的外层作用域中。
例子:
如果在位置1处,进行using声明,函数调用时两个函数都可见,匹配后输出“2”;
如果在位置1处,进行using指示,函数调用时两个函数都可见,匹配后输出“2”;
如果在位置2处,进行using声明,命名空间内的函数在局部作用域内可见,并对外层作用域同名隐藏,输出“1”;
如果在位置2处,进行using指示,命名空间内的函数看起来像是定义在main所在定义域,函数调用时两个函数都可见,匹配后输出“2”;
namespace primerLib
{
void compute(void *){ cout << "1" << endl; }
}
void compute(int){ cout << "2" << endl; }
//位置1
int main()
{
//位置2
compute(0);
}