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

C/C++_log2000_namespace再探

2017-03-14 17:50 169 查看
#include<iostream>
using namespace std;
int i;          //std 中的全局变量
namespace a{
int i;      //a 中的全局变量
}
int main(){
i=5;
a::i=55;
{
using namespace a;
int j;
j=7;
cout<<"i="<<i<<endl;//如果不做设定,直接输出i会报错,因为不知道是输出全局变量i还是namespace a中的i
cout<<"j="<<j<<endl;
}
cout<<"i="<<i<<endl;
return 0;
}


错误信息

||=== Build file: "no target" in "no project" (compiler: unknown) ===|
~.cpp||In function 'int main()':|
~.cpp|14|error: reference to 'i' is ambiguous|
~.cpp|3|note: candidates are: int i|
~.cpp|5|note:                 int a::i|
||==
4000
= Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|


更改一下

#include<iostream>
using namespace std;
int i;          //std 中的全局变量
namespace a{
int i;      //a 中的全局变量
}
int main(){
i=5;
a::i=6;
{
using namespace a;
int j;
j=7;
cout<<"i="<<a::i<<endl;
cout<<"j="<<j<<endl;
}
cout<<"i="<<i<<endl;
return 0;
}


输出正常

i=6
j=7
i=5


再变一下

#include<iostream>
using namespace std;
int i;          //std 中的全局变量
namespace a{
int j;      //a 中的全局变量
}
int main(){
i=5;
a::j=6;
{
using namespace a;
int i;
i=7;
cout<<"i="<<i<<endl;
cout<<"j="<<j<<endl;
}
cout<<"i="<<i<<endl;
return 0;
}


输出

i=7
j=6
i=5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: