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);
}
本文详细解释了C++中使用using声明与using指示的区别,包括它们如何影响局部与外层作用域中的名称解析,以及如何正确使用这些特性来避免命名冲突。
513

被折叠的 条评论
为什么被折叠?



