上面的代码被编译和执行时,它会产生下列结果:
Inside second_space
【建站服务】高端!网站定制/设计/优化/二次开发/制作/搭建-厦门高端网站建设-域名申请
作者: 风兰 . 阅读量: 8 . 发表时间:2022-09-21 02:19:31
上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
高端!网站定制/设计/优化/二次开发/制作/搭建-厦门高端网站建设

上面的代码被编译和执行时,它会产生下列结果:
Inside second_space
感谢 @Linthree的分享,受益。补充一个命名空间冲突的情况:
#include <iostream>
using namespace std;
namespace A {
int a = 100;
namespace B //嵌套一个命名空间B
{
int a = 20;
}
}
int a = 200;//定义一个全局变量
int main(int argc, char *argv[]) {
cout << "A::a =" << A::a << endl; //A::a =100
cout << "A::B::a =" << A::B::a << endl; //A::B::a =20
cout << "a =" << a << endl; //a =200
cout << "::a =" << ::a << endl; //::a =200
using namespace A;
cout << "a =" << a << endl; // Reference to 'a' is ambiguous // 命名空间冲突,编译期错误
cout << "::a =" << ::a << endl; //::a =200
int a = 30;
cout << "a =" << a << endl; //a =30
cout << "::a =" << ::a << endl; //::a =200
//即:全局变量 a 表达为 ::a,用于当有同名的局部变量时来区别两者。
using namespace A;
cout << "a =" << a << endl; // a =30 // 当有本地同名变量后,优先使用本地,冲突解除
cout << "::a =" << ::a << endl; //::a =200
return 0;
}
高端!网站定制/设计/优化/二次开发/制作/搭建-厦门高端网站建设
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站



Linthree
m15***009103@163.com
关于命名空间内变量和函数及全局变量的使用和作用域:
#include <iostream>using namespace std;namespace A{ int a = 100; namespace B //嵌套一个命名空间B { int a =20; }}int a = 200;//定义一个全局变量int main(int argc, char *argv[]){ cout <<"A::a ="<< A::a << endl; cout <<"A::B::a ="<<A::B::a << endl; cout <<"a ="<<a << endl; cout <<"::a ="<<::a << endl; int a = 30; cout <<"a ="<<a << endl; cout <<"::a ="<<::a << endl; return 0;}结果:
即:全局变量 a 表达为 ::a,用于当有同名的局部变量时来区别两者。
补充关于 using 的错误事例:
#include <iostream>using namespace std;namespace A{ int a = 100; int fun() { cout<<"a = "<<a<<endl; } namespace B //嵌套一个命名空间B { int a =20; int fun() { cout<<"a = "<<a<<endl; } }}int main(int argc, char *argv[]){ cout<<a<<endl; fun(); return 0;}这样会出错:会显示 a 变量和 fun 函数 “was not declared in this scope”,即找不到这个 a 和 fun 函数。
解决办法: 用 using 来告诉编译器用到的是哪个命名空间内的内容。在 main() 上面加 using namespace A; 或者 using namespace A::B; 。这样就可以使用其中的 a 和 fun()。但是不能同时使用,因为这样也会导致编译出错,编译器器不知道要去使用哪个 a 和 fun()。