1 #include2 using namespace std; 3 4 namespace A{ 5 int a = 1; 6 } 7 8 namespace B{ 9 int b = 2;10 }11 12 namespace C{13 int c = 3;14 }15 16 int main(){17 18 int a = 10;19 int b = 20;20 int c = 30;21 22 using namespace A;23 using namespace B;24 using namespace C;25 26 cout<<"a = "< <
以上代码,会输出什么呢?答案如下:
1 a = 102 b = 203 c = 304 a::a = 15 b::b = 26 c::c = 37 请按任意键继续. . .
可见,函数内定义的变量声明会覆盖命名空间里的变量声明。所以,这里需要编程者注意,如果你在名字空间里做了一些赋值操作,那么在调用它的地方,一定要注意会不会被覆盖。
注:最好的调用方法是名字空间::变量名。
1 namespace A{ 2 int a = 1; 3 } 4 5 namespace B{ 6 int b = 2; 7 } 8 9 namespace C{10 int c = 3;11 int b = 3;12 }13 14 int main(){15 16 //int a = 10;17 //int b = 20;18 //int c = 30;19 20 using namespace A;21 using namespace B;22 using namespace C;23 24 cout<<"a = "<<
上面的代码是通不过编译的,因为变量b的调用不明确,这就是所谓的“名字冲突”。