变量的范围 namespace
变量的范围
- 范围
变量有 菊部变量 和 全局变量之分, local variable 和 global variable
一般在函数体外定义的变量是全局的,函数体内定义的变量只能在函数内使用
注意:在同一个范围内,同一个变量名不能定义两次
在不同的空间范围内可以定义同样名字的变量,这时候他们的作用范围也是不同的
- NameSpace
为了避免命名冲突(因为如果大家都是全局变量的话,程序一多,难免会有冲突,比如说都int x;
作为计数器)
Namespaces
可以把变量约束在不同的命名空间里,通过调用不同的命名空间来指定某个变量,类似于“三年级一班的小明”、“三年级二班的小明”等等
在命名空间内部可以直接使用变量a和b,在外部想引用空间内的对象的话需要使用 “范围操作符” 双冒号 ::
上面的例子中,如果想在外面使用a和b,myNamespace::a
,myNamespace::b
命名空间可以有效的避免命名冲突,如下图有两个value()
函数,pi
虽然定义在bar
内部,但是也可以在main
里面调用这个量
命名空间可以分开写,下面的foo
空间分开两次定义了a,c 效果和一下定义a和c是一样的,这只是简单的分行写,甚至还可以分开到不同的文件或者源代码里去定义。
- using
上面说到了命名空间,我们在引用空间内部的对象的时候,格式是 空间标识符::对象
通过using
我们可以省略前面的空间名字,就像之前的std::cout
简写成cout
一样,前提是using namgspace std;
下面看两种using
方式
1. 直接把对象using出来直接用,这里是using
2.把命名空间引出来,using namespace,他里面的所有成员可以直接用,但是其他空间里的同名变量还是得按标准来。这里是using namespace
这个例子如果再using namespace second;
就会报错了,两个空间里都有x y,编译器无法确定用哪个空间里的。
using namespace具有自己的使用范围,在全局using
和在代码片里using
,各自的范围就是全局和对应的代码范围。
变量的范围 namespace的更多相关文章
- django removing hardcoded URLs in template --- 使用变量,把url放在变量中 {% url 'namespace:name' %}
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^votes/', include("polls.urls", na ...
- C++中的命名空间
一,命名空间(namespace)的基本概念以及由来 1.什么是标识符: 在C++中,标识符可以是基本的变量,类,对象,结构体,函数,枚举,宏等. 2.什么是命名空间: 所谓的命名空间是指标识符的可见 ...
- CVE-2015-7645 analyze and exploit
Hack team之后adobe和google合作对flash进行了大改,一度提高了flash的利用门槛,CVE-2015-7645作为第一个突破这些限制的漏洞利用方式,可以作为vetect利用方式之 ...
- 初学Less
使用Less Server-side usage npm安装 命令行使用 在代码中使用 Client-side usage 语言特性 Variables Mixins Nested Rules Ope ...
- CodeSmith 介绍
代码生成器作用 中国有句古语叫做“工欲善其事,必先利其器”,用通俗的话来说就是“磨刀不误砍柴功”,古人的这些话告诉我们:要把事情做好,事先应该准备合适的工具.工具不仅仅包括器具, 还包括思想.理论.经 ...
- MMORPG大型游戏设计与开发(客户端架构 part16 of vegine)
由于近来比较忙碌和有些困倦的原因,所以关于这部分的文章没有及时更新,一句话:让朋友们久等了!今天所讲的是客户端vengine(微引擎)中最后一个部分,就像上节所说,这一部分的内容比较多.可能有些朋友看 ...
- tornado中使用Mako模版
tornado是一个优秀的python的开源web 框架,框架本身的性能确实很好,但是他自带的模版只能说是一般般.关于tornado的详细信息可以直接到管网参考. http://www.tornado ...
- 关于WinForm/Web如何使用缓存Cach
原文链接:http://www.cnblogs.com/zfanlong1314/archive/2013/03/28/2986403.html Cache 的绝对到期与滑动到期 绝对到期:设置绝对过 ...
- 使用 CodeIgniter 框架快速开发 PHP 应用(七)
原文:使用 CodeIgniter 框架快速开发 PHP 应用(七) CodeIgniter 和对象这是玩家章节.它讲述的是 CodeIgniter 的工作原理,也就是揭开CI头上'神秘的面纱'.如果 ...
随机推荐
- java并发编程(十八)----(线程池)java线程池框架Fork-Join
还记得我们在初始介绍线程池的时候提到了Executor框架的体系,到现在为止我们只有一个没有介绍,与ThreadPoolExecutor一样继承与AbstractExecutorService的For ...
- 转载 | 如何给网页标题添加icon小图标
打开某一个网页会在浏览器的标签栏处显示该网页的标题和图标,当网页被添加到收藏夹或者书签中时也会出现网页的图标,怎么在网页title左边显示网页的logo图标呢? 方法一(被动式): 制作一个ico格式 ...
- javaWeb 中前端Form表单数据处理(手动拼json)
在前端我们会用到最多的就是form表单提交数据,在form表单中有很多都是自动将数据传到后台,然后通过实体来接受的,但是有的时候我们就是需要在前端就拿到这个Form表单的数据,这是我们就可以自己讲数据 ...
- openldap介绍和使用
openldap介绍和使用 为什么会有本文? 早期,公司是没有统一认证这个东西的,所以各自玩各自的.于是, confluence一个用户体系,gitlab一个用户体系,Jenkins一个用户体系等等, ...
- Docker系列之AspNetCore Runtime VS .NetCore Runtime VS .NET Core SDK(四)
前言 接下来我们就要慢慢步入在.NET Core中使用Docker的殿堂了,在开始之前如题,我们需要搞清楚一些概念,要不然看到官方提供如下一系列镜像,我们会一脸懵逼,不知道到底要使用哪一个. AspN ...
- 【JavaScript】论一个低配版Web实时通信库是如何实现的之二( EventSource篇)
前情提要 「 话说上回说到!那WebSocket大侠,巧借http之内力,破了敌阵的双工鸳鸯锁,终于突出重围. 然而玄难未了,此时web森林中飞出一只银头红缨枪,划破夜色. "莫非!?&qu ...
- Container及其内部进程监控剖析
目前市场上的虚拟化技术种类很多,例如moby(docker).LXC.RKT等等.在带来方便应用部署和资源充分利用的好处的同时,如何监控相应Container及其内部应用进程成为运维人员不可避免遇到的 ...
- random库的使用
一.random库介绍 random库是使用随机数的Python标准库 伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素 random库主要用于生成随机数 使用random库:import ran ...
- @RequestBody 注意的问题
contentType : "application/json", //只能是这个 RequestBody 不能和form/data共存: @RequestMapping(valu ...
- vue中组件通信
组件的通信 1. 父子组件通信 案例: //父子组件通信思路 // 1 将父组件的数据传给子组件 在子组件上自定义单项数据绑定 // 2 子组件用props 接受自定义的那个:号属性 Vue.co ...