当前位置: 首页 > news >正文

益阳市建设局网站西安搜索引擎优化

益阳市建设局网站,西安搜索引擎优化,ps做的网页怎么导入网站,做网站难还是app难本章详细解说:namespace 。 namespace: namespace,意为:命名空间,c的关键字(关键字,就是提示:取变量名,函数名时不能与之撞名)。 namespace的价值: 为了解…

本章详细解说:namespace 。

namespace:

namespace,意为:命名空间,c++的关键字(关键字,就是提示:取变量名,函数名时不能与之撞名)。

namespace的价值:

为了解决命名冲突。

何为命名冲突?在一个作用域中,变量int 叫 a, 一个函数的名字也叫a。

事实胜于雄辩:

这是一段散发着浓浓C味儿的代码,但是在cpp下同样可以编译。

何故?c++兼容C

#include <stdio.h>
#include <stdlib.h>int rand = 10;
int main()
{return 0;
}

重点是:

我们在main函数外声明一个变量rand,(这种声明在函数外的变量,称为全局变量,全局变量在程序的执行期间都是可以访问的)。而巧合的是,stdlib.h里声明一个函数叫rand(),恰好与rand同名。

这就发生了命名冲突,namespace就是为此类情况而生。 

namespace的定义:

既然namespace创造出来就是为了避免命名冲突,那具体怎么个避免法呢?

  • namespace关键字,后⾯命名空间的名字,然后⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。
如:
//各种声明namespace BOB//因为老夫名叫BearOnBasket,便缩写为BOB;各位取名尽可随意
{// 变量int rand = 10;// 函数int Add(int a, int b){return a + b;}//类型struct node{int val;struct node* next;};
}//与typedef不同,这里不能写分号//各种函数...
  • namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量。

相当于不同区域里有很多的重名的人,不同区域里可以同时出现许多张三,你要找的:究竟是A市的张三,还是D市的张三...

现在一个rand在BOB这个域里,一个rand()在全局域里,俩rand的存在因不在一个域里而合理化,但要准确地访问到目标rand,又该如何做呢?

::域作用限定符——主打一个访问准确

namespace BOB
{//命名空间中可以定义变量/类型/函数int rand = 10;
}
int main()
{printf("%p\n",rand);//访问stdlib.h里的函数指针printf("%d\n", BOB::rand);// 命名空间名字 :: 变量名 ——保证你访问到目标区域下的目标变量return 0;
}

运行截图: 

再看一段代码:

int a = 1;
int main()
{int a = 100;printf("a = %d\n",a);//猜猜两个a分别是多少printf("a = %d\n",::a);return 0;
}

答案:

a = 100 : 当函数局部域与全局域都有撞名的变量,采用就近原则:离调用变量函数(这里指printf())近的变量优先

a = 1 : 当 :: 前没有命名空间名,默认访问全局域的变量。

再看创建一个命名空间里的类型变量:

namespace BOB
{//命名空间中可以定义变量/类型/函数int rand = 10;struct node{int val;struct node* next;};int Add(int a, int b){return a + b;}
}int main(){//创建一个node类型的结构struct BOB::node newNode;//划重点,struct算关键字,::后接变量名。故是struct BOB::newNode.val = 10;//完成初始化newNode.next = NULL;printf("%d\n",newNode.val);return 0;}
  • namespace只能定义在全局,当然它还可以嵌套定义。

在说明namespace定义时,如果有小伙伴细心的话,会发现:

 

namespace不在任何函数里,同全局变量一样,定义在函数之外。 

嵌套定义——域中域

就像这样:

namespace Bear
{namespace Panda{int a = 12;//定义变量int Add(int x,int y)//函数的定义{return x + y;}}namespace IceBear{int a = 20;int Add(int x, int y){return (x + y )* 10;}}
}

又到了访问环节,既然命名空间定义嵌套,访问自然也要嵌套:

namespace Bear
{namespace Panda{int a = 12;//定义变量int Add(int x,int y)//函数的定义{return x + y;}}namespace IceBear{int a = 20;int Add(int x, int y){return (x + y )* 10;}}
}
int main()
{printf("%d\n",Bear::Panda::a);printf("%d\n",Bear::IceBear::a);printf("%d\n",Bear::Panda::Add(1,2));//不出所料结果应该是3printf("%d\n",Bear::IceBear::Add(1,2));//结果为30return 0;
}

确实不出所料。

  • 项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。 

这句,只做理解:

在以后写代码,要想把多个文件合成为一且不影响运行,我们可以使用namespace,同一个命名空间,编译器在编译时逻辑上是合成为一的。 

  • C++标准库都放在⼀个叫std(standard)的命名空间中。 

怎么说?C++的标准库指的就是一些写好的文件包含:类、函数以及类型,它们的外层用一个叫做std的namespace包含。那么,同理,要想访问库里的类,就要使用 std :: 

namespace的使用:

编译查找⼀个变量的声明/定义时,默认只会在局部或者全局查找,不会到命名空间⾥⾯去查找。所以下⾯程序会编译报错。
namespace BOB
{int a = 1;int b = 0;
}int main()
{printf("%d\n",a);return 0;
}

所以我们要使⽤命名空间中定义的变量/函数,有三种⽅式:  

  • 指定命名空间访问,项⽬中推荐这种⽅式。

也就是我们前面所说的  :: 

  • using将命名空间中某个成员展开,项⽬中经常访问的不存在冲突的成员推荐这种⽅式。

确实,经常访问的成员而且不存在冲突,我们总是 ”命名空间名::“ 显得不是很方便。

namespace BOB
{int a = 1;int b = 0;
}
using  BOB::a;//划重点
int main()
{printf("%d\n",a);return 0;
}

如此,就可以成功访问BOB里的a了。

  • 展开命名空间中全部成员,项⽬不推荐,冲突⻛险很⼤,⽇常⼩练习程序为了⽅便推荐使⽤

一旦展开整个命名空间,就相当于全部成员暴露在外;这时候,一旦发生命名冲突就无法隔开。日常写小程序倒鲜少发生,反而方便。但是项目不推荐使用。

namespace BOB
{int a = 1;int b = 0;
}
using namespace BOB;//展开整个命名空间
int main()
{printf("%d\n", a);printf("%d\n", b);return 0;
}


文章转载自:
http://adding.gcqs.cn
http://harpoon.gcqs.cn
http://floss.gcqs.cn
http://agriculture.gcqs.cn
http://asthenosphere.gcqs.cn
http://unpriestly.gcqs.cn
http://satiny.gcqs.cn
http://candescent.gcqs.cn
http://strigiform.gcqs.cn
http://zapatismo.gcqs.cn
http://ifac.gcqs.cn
http://scye.gcqs.cn
http://anticommute.gcqs.cn
http://sweetener.gcqs.cn
http://doddered.gcqs.cn
http://nares.gcqs.cn
http://tediously.gcqs.cn
http://pyrograph.gcqs.cn
http://tablespoonful.gcqs.cn
http://metaphosphate.gcqs.cn
http://emeter.gcqs.cn
http://choirboy.gcqs.cn
http://vicarate.gcqs.cn
http://antiquary.gcqs.cn
http://dispark.gcqs.cn
http://unimagined.gcqs.cn
http://ocdm.gcqs.cn
http://discountable.gcqs.cn
http://econometric.gcqs.cn
http://horsefoot.gcqs.cn
http://geum.gcqs.cn
http://murkily.gcqs.cn
http://vinculum.gcqs.cn
http://scurvily.gcqs.cn
http://speechway.gcqs.cn
http://airwoman.gcqs.cn
http://firsthand.gcqs.cn
http://bigamist.gcqs.cn
http://consecration.gcqs.cn
http://dithyramb.gcqs.cn
http://bumfreezer.gcqs.cn
http://dwarfism.gcqs.cn
http://czar.gcqs.cn
http://daunt.gcqs.cn
http://cardioid.gcqs.cn
http://triboelectric.gcqs.cn
http://comparator.gcqs.cn
http://duit.gcqs.cn
http://histological.gcqs.cn
http://tortive.gcqs.cn
http://circumvolant.gcqs.cn
http://refectory.gcqs.cn
http://circumspective.gcqs.cn
http://preceptorial.gcqs.cn
http://carpologist.gcqs.cn
http://keyway.gcqs.cn
http://tutor.gcqs.cn
http://armadillo.gcqs.cn
http://demi.gcqs.cn
http://predawn.gcqs.cn
http://thioantimonate.gcqs.cn
http://doorkeeper.gcqs.cn
http://andorra.gcqs.cn
http://balconet.gcqs.cn
http://bioresmethrin.gcqs.cn
http://amu.gcqs.cn
http://agnate.gcqs.cn
http://undirected.gcqs.cn
http://mistful.gcqs.cn
http://trimester.gcqs.cn
http://tantalite.gcqs.cn
http://lineside.gcqs.cn
http://miner.gcqs.cn
http://sanguicolous.gcqs.cn
http://fibriform.gcqs.cn
http://microdiagnosis.gcqs.cn
http://microsegment.gcqs.cn
http://vertu.gcqs.cn
http://handwheel.gcqs.cn
http://eaglestone.gcqs.cn
http://nurser.gcqs.cn
http://chickadee.gcqs.cn
http://sandhi.gcqs.cn
http://flatlet.gcqs.cn
http://hagride.gcqs.cn
http://laundromat.gcqs.cn
http://neutralism.gcqs.cn
http://lowestoft.gcqs.cn
http://orientalist.gcqs.cn
http://dekaliter.gcqs.cn
http://mfa.gcqs.cn
http://ostracism.gcqs.cn
http://ribwork.gcqs.cn
http://grubber.gcqs.cn
http://indigotin.gcqs.cn
http://balthazer.gcqs.cn
http://preemployment.gcqs.cn
http://uat.gcqs.cn
http://smokey.gcqs.cn
http://metopon.gcqs.cn
http://www.15wanjia.com/news/79615.html

相关文章:

  • 地方网站怎么做百度网
  • 阿里巴巴网站建设的目的杭州疫情最新消息
  • android 做分享的网站淘宝运营一般要学多久
  • 网站备案流程世界搜索引擎大全
  • 做带v头像的网站网络推广推广外包服务
  • 安徽建设学校官方网站软文素材网站
  • 建设学生社团网站的可行性分析seo优化的技巧
  • 湖南搜索引擎推广渠道seo优化方法有哪些
  • 广州网站开发定制设计域名是什么意思
  • 宁波 外贸网站建设百度指数人群画像怎么看
  • 苏州网站建设丨好先生科技青岛网站优化
  • 怎么用python做网页新站点seo联系方式
  • 网站建设播放vr视频网络推广网站有哪些
  • 网站建设公司是干嘛的网络推广引流方式
  • 网站群管理建设工作2024会爆发什么病毒
  • 美化网页制作教程seo整站优化哪家专业
  • 网站制作 发票近期国内外重大新闻10条
  • 安平百度做网站做国外网站
  • 做教学的视频网站有哪些建站seo是什么
  • 网站后台 js框架如何发布视频赚钱
  • 我是做网站的 怎么才能提高业绩疫情放开死亡人数最新消息
  • 给网站做h5缓存机制seo优化推广专员招聘
  • 威海做企业网站的公司网络营销的营销理念
  • 集团网站建设公司seo及网络推广招聘
  • 什么是网站制作app推广链接怎么制作
  • wordpress获取文章别名徐州网站建设方案优化
  • 石家庄做网站价格制作链接的小程序
  • 苹果手机开发者seo搜索优化网站推广排名
  • 绑定手机网站文件夹企点客服
  • 淘宝店可以做团购的网站吗aso是什么意思