变量的范围

 

  • 范围

  变量有 菊部变量 和 全局变量之分, local variable 和 global variable
  一般在函数体外定义的变量是全局的,函数体内定义的变量只能在函数内使用
  
  
  注意:在同一个范围内,同一个变量名不能定义两次
  
   在不同的空间范围内可以定义同样名字的变量,这时候他们的作用范围也是不同的
  

  • NameSpace
      为了避免命名冲突(因为如果大家都是全局变量的话,程序一多,难免会有冲突,比如说都 int x;作为计数器)
      Namespaces可以把变量约束在不同的命名空间里,通过调用不同的命名空间来指定某个变量,类似于“三年级一班的小明”、“三年级二班的小明”等等
      
      在命名空间内部可以直接使用变量a和b,在外部想引用空间内的对象的话需要使用 “范围操作符” 双冒号 ::
      上面的例子中,如果想在外面使用a和b,myNamespace::amyNamespace::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的更多相关文章

  1. django removing hardcoded URLs in template --- 使用变量,把url放在变量中 {% url 'namespace:name' %}

    urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^votes/', include("polls.urls", na ...

  2. C++中的命名空间

    一,命名空间(namespace)的基本概念以及由来 1.什么是标识符: 在C++中,标识符可以是基本的变量,类,对象,结构体,函数,枚举,宏等. 2.什么是命名空间: 所谓的命名空间是指标识符的可见 ...

  3. CVE-2015-7645 analyze and exploit

    Hack team之后adobe和google合作对flash进行了大改,一度提高了flash的利用门槛,CVE-2015-7645作为第一个突破这些限制的漏洞利用方式,可以作为vetect利用方式之 ...

  4. 初学Less

    使用Less Server-side usage npm安装 命令行使用 在代码中使用 Client-side usage 语言特性 Variables Mixins Nested Rules Ope ...

  5. CodeSmith 介绍

    代码生成器作用 中国有句古语叫做“工欲善其事,必先利其器”,用通俗的话来说就是“磨刀不误砍柴功”,古人的这些话告诉我们:要把事情做好,事先应该准备合适的工具.工具不仅仅包括器具, 还包括思想.理论.经 ...

  6. MMORPG大型游戏设计与开发(客户端架构 part16 of vegine)

    由于近来比较忙碌和有些困倦的原因,所以关于这部分的文章没有及时更新,一句话:让朋友们久等了!今天所讲的是客户端vengine(微引擎)中最后一个部分,就像上节所说,这一部分的内容比较多.可能有些朋友看 ...

  7. tornado中使用Mako模版

    tornado是一个优秀的python的开源web 框架,框架本身的性能确实很好,但是他自带的模版只能说是一般般.关于tornado的详细信息可以直接到管网参考. http://www.tornado ...

  8. 关于WinForm/Web如何使用缓存Cach

    原文链接:http://www.cnblogs.com/zfanlong1314/archive/2013/03/28/2986403.html Cache 的绝对到期与滑动到期 绝对到期:设置绝对过 ...

  9. 使用 CodeIgniter 框架快速开发 PHP 应用(七)

    原文:使用 CodeIgniter 框架快速开发 PHP 应用(七) CodeIgniter 和对象这是玩家章节.它讲述的是 CodeIgniter 的工作原理,也就是揭开CI头上'神秘的面纱'.如果 ...

随机推荐

  1. ImageView 使用详解

    极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...

  2. Cobbler 自动安装CentOS7

    1. Cobbler介绍 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等.Cobbler可以使用命 ...

  3. 我的第一个py爬虫-小白(beatifulsoup)

    一.基本上所有的python第一步都是安装.安装 我用到的第三方安装包(beatifulsoup4.re.requests).还要安装lxml 二.找个http开头的网址我找的是url="h ...

  4. 【Java例题】2.3 计算银行存款本息

    3.计算银行存款本息. 用户输入存款金额money,存款期years和年利率rate, 根据公式: sum=money(1+rate)^years ,计算到期存款本息. 这里的"^" ...

  5. 【POJ - 2431】Expedition(优先队列)

    Expedition 直接中文 Descriptions 一群奶牛抓起一辆卡车,冒险进入丛林深处的探险队.作为相当差的司机,不幸的是,奶牛设法跑过一块岩石并刺破卡车的油箱.卡车现在每运行一个单位的距离 ...

  6. vscode导入已存在的vue.js工程

    1.安装vue_cli 如果安装了npm,直接在命令行输入npm install -g vue-cli,安装在全局组件目录下 完成后,可以在命令测试下 2.导入工程 打开vscode-------&g ...

  7. shiro登录名的获取

    登录名的获取:通过的SecurityUtils的shiro import org.apache.shiro.SecurityUtils; //登录用户名 String loginAccount = S ...

  8. Servlet 获取 数组id进行批量删除

    把获取的复选框选中的 id(一般来说都是根据id 进行批量删除的) 从jsp页面 传值到Servlet中 jsp点击事件中: var array=[];  //先声明一个数组变量 var ids=$( ...

  9. 分布式配置中心Apollo——QuickStart

    分布式配置中心 剥离配置文件,实现动态修改,自动更新. [假设没有分布式配置中心,修改配置文件后都需要重启服务,对于数量庞多的微服务开发来说,就会非常繁琐] 分布式配置中心有哪些 disconf(依赖 ...

  10. Unity进阶:用AssetBundle和Json做了一个玩家登陆界面

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...