C++这段代码为什么局部变量的命名空间引用没有产生歧义,而全局变量的命名空间却产生歧义了?

C++这段代码为什么局部变量的命名空间引用没有产生歧义,而全局变量的命名空间却产生歧义了?//例如以下代码,同样是usingnamespaceA;为什么局部变量正常,到了... C++这段代码为什么局部变量的命名空间引用没有产生歧义,而全局变量的命名空间却产生歧义了?
//例如以下代码,同样是 using namespace A; 为什么局部变量正常,到了全局变量就产生歧义了?(编译器报错)
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <fstream>
#include <direct.h>
#include <strstream>
using namespace std;
namespace A
{
int a;
}
using namespace A;
int a=11;
int b=a;//为什么产生歧义?
int main(void)
{
using namespace A;
int a=11;
int b=a;//为什么产生正常?
getch();
return 0;
}
展开
 我来答
百度网友5e2c30c6c
2011-09-13 · TA获得超过816个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:474万
展开全部
namespace可以消除全局变量歧义,局部变量会覆盖同名全局变量。
在全局定义int a=11,由于之前using namespace A,相当于已经有了一个同名同作用域的变量,故产生命名冲突。
在main中定义了int a=11,同作用域没有同名对象,A::a是全局变量,会被局部变量覆盖。在main中引用a,得到的是局部变量a,要引用全局a需要用A::a。
百度网友4a674158c
2011-09-11
知道答主
回答量:21
采纳率:0%
帮助的人:25万
展开全部
namespace A
{
int a;
}
a为全局变量
int a=11;
也为全局变量

int a=11;
int b=a;//为什么产生正常?
a为局部变量

int main(void)
{
using namespace A;
只是引入命名空间A 并不是说把A的代码放到这个位置上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式