超简单的C++问题,求指教C++全局作用域和名字空间作用域是什么关系

如题namespaceblip{intbi=16,bj=15,bk=23;}intbj=0;voidmanip(){usingblip::bi;++bi;//设置blip... 如题
namespace blip {
int bi = 16, bj = 15, bk = 23;
}
int bj = 0;
void manip() {
using blip::bi;
++bi; // 设置 blip::bi 为 17
using blip::bj; // 隐藏全局域中的 bj
++bj; // 设置 blip::bj 为 16
int bk; // bk 在局部域中声明
using blip::bk; // 错误: 在 manip() 中重复定义 bk
}
最后一行的错误是为什么
namespace blip {int bi = 16, bj = 15, bk = 23; }
int bj = 0;
void manip() {
using namespace blip;
++bi; // 设置 blip::bi 为 17
++bj; // 错误: 二义性
++::bj; // ok: 设置全局 bj 为 1
++blip::bj; // ok: 设置 blip::bj 为 16
int bk = 97; // 局部 bk,隐藏 blip::bk
++bk; // 设置局部 bk 为 98
}
这里又为什么有错
展开
 我来答
reverse_walker
2013-01-02 · TA获得超过590个赞
知道小有建树答主
回答量:377
采纳率:0%
帮助的人:464万
展开全部
#include<iostream>

using blip::bj // 把命名空间里的元素引入全局作用域
using namespace blip ; // 同上

int main()
{
using blip::bj //把命名空间里的元素bj引入本地作用域,
//和本地变量发生命名冲突

using namepsace blip ; // 把命名空间里的所有元素引入全局作用域
//和全局变量发生冲突

}
更多追问追答
追问
再问个问题,头文件里的声明和对应于它的实现是必须在同一个名字空间里吗
追答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式