重名冲突

#include<iostream>

namespace a

{

    int TestName = 5;

}

namespace b

{

   int TestName=8;

}

int main()

{

  int TestName=9;

  std::cout<<TestName<<" "<<a::TestName<<" "<<b::TestName<<std::endl;

  return 0;

}

运行效果如下:

正行运行打印了局部和命名空间a,b中的相同变量TestName,没有发生冲突

 

如代码修改如下:

int main()
{
 using namespace a;
 using namespace b;
 std::cout<<TestName
 return 0;
}

运行错误如下

同时释放名字空间a,b, 同时不用a::/b::进行控制的话,就会出现以上错误,编译器没办法定位到底改链接哪个空间的TestName变量。

 

 

 

posted @ 2012-12-13 10:42  tongdh  阅读(163)  评论(0编辑  收藏  举报