您的位置:首页 > 编程语言 > C语言/C++

[C++基础]002_名字空间(namespace)

2012-10-08 22:55 405 查看
#include <iostream>
using namespace std;

namespace A{
int a = 1;
}

namespace B{
int b = 2;
}

namespace C{
int c = 3;
}

int main(){

int a = 10;
int b = 20;
int c = 30;

using namespace A;
using namespace B;
using namespace C;

cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;

cout<<"a::a = "<<A::a<<endl;
cout<<"b::b = "<<B::b<<endl;
cout<<"c::c = "<<C::c<<endl;

system("pause");
return 0;
}


以上代码,会输出什么呢?答案如下:

a = 10
b = 20
c = 30
a::a = 1
b::b = 2
c::c = 3
请按任意键继续. . .


可见,函数内定义的变量声明会覆盖命名空间里的变量声明。所以,这里需要编程者注意,如果你在名字空间里做了一些赋值操作,那么在调用它的地方,一定要注意会不会被覆盖。

注:最好的调用方法是名字空间::变量名。

namespace A{
int a = 1;
}

namespace B{
int b = 2;
}

namespace C{
int c = 3;
int b = 3;
}

int main(){

//int a = 10;
//int b = 20;
//int c = 30;

using namespace A;
using namespace B;
using namespace C;

cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;


上面的代码是通不过编译的,因为变量b的调用不明确,这就是所谓的“名字冲突”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: