超简单的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
}
这里又为什么有错 展开
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
}
这里又为什么有错 展开
1个回答
展开全部
#include<iostream>
using blip::bj // 把命名空间里的元素引入全局作用域
using namespace blip ; // 同上
int main()
{
using blip::bj //把命名空间里的元素bj引入本地作用域,
//和本地变量发生命名冲突
using namepsace blip ; // 把命名空间里的所有元素引入全局作用域
//和全局变量发生冲突
}
using blip::bj // 把命名空间里的元素引入全局作用域
using namespace blip ; // 同上
int main()
{
using blip::bj //把命名空间里的元素bj引入本地作用域,
//和本地变量发生命名冲突
using namepsace blip ; // 把命名空间里的所有元素引入全局作用域
//和全局变量发生冲突
}
更多追问追答
追问
再问个问题,头文件里的声明和对应于它的实现是必须在同一个名字空间里吗
追答
是
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询