精华内容
下载资源
问答
  • 命名空间作用

    千次阅读 2015-08-05 20:54:17
    在讲命名空间作用域之前,简单的介绍一下命名空间。举个例子,比如说班级A有个叫小张的,B班也有一个叫叫小张的,假如你要找A班的小张,那么在走廊里大叫小张,就会产生歧义。为了声明你找的那个小张,你就得说明:...

    在讲命名空间作用域之前,简单的介绍一下命名空间。举个例子,比如说班级A有个叫小张的,B班也有一个叫叫小张的,假如你要找A班的小张,那么在走廊里大叫小张,就会产生歧义。为了声明你找的那个小张,你就得说明:我要找A班的小张,歧义就会消除。这个A班,其实就是命名空间的限制。</span>

    命名空间的语法如下:

    namespace 空间名
    {
            命名空间中的各种声明(变量、函数等)
    }
    在此命名空间内可以随意使用空间中的标识符,但若是想引用另一个命名空间中的标识符,就要使用如下的语法:

    命名空间名::标识符

    如:

    namespace Ns
    {
             int j;
    }
    Ns::j=10;
    有时候这样使用也很麻烦,另外有一种简单的方法:

    using  Ns::j或者是using namespace Ns;下面就可以使用Ns中的标识符啦。

    #include<iostream>
    using namespace std;
    namespace A
    {
        int x=1;
        void fun()
        {
            cout<<"A"<<endl;
        }
    }
    namespace B
    {
        int x=2;
        void fun()
        {
            cout<<"B"<<endl;
        }
        void fun2()
        {
            cout<<"BB"<<endl;
        }
    }
    int main()
    {
        cout<<A::x<<endl;
        cout<<B::x<<endl;
        using namespace B;
        A::fun();
        fun();
        fun2();
        return 0;
    }
    
    结果:

    #include<iostream>
    using namespace std;
    int i;
    namespace Ns
    {
       int j;
    }
    int main()
    {
       i=5;
       Ns::j=6;
       {
           using namespace Ns;
           int i;
           i=7;
           cout<<"i="<<i<<endl;
           cout<<"j="<<j<<endl;
       }
       cout<<"i="<<endl;
        return 0;
    }
    
    结果:

    具有命名空间作用域的变量也成为全局变量,在命名空间定义的标识符在使用的时候必须加上命名空间名。

    匿名的空间:

    namespace{

    匿名空间内的各种声明(函数、变量、类)

    }



    展开全文
  • C++ 变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6 种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。 从作用域看: 全局变量具有全局作用域。全局变量...

    C++ 变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6 种:全局作用域局部作用域语句作用域类作用域命名空间作用域和文件作用域

    从作用域看:

    全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。

    静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。

    局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。

    静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。

    从分配内存空间看:

    全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间。

    全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

    •  1)、静态变量会被放在程序的静态数据存储区(数据段)(全局可见)中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
    •  2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。

    从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。应予以注意。

    Tips:

    • A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
    • B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
    • C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题,因为他们都放在静态数据存储区,全局可见;
    • D、如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)
    • E、函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

    -----------------------------------------------------------------------------------------------------------

    static 全局变量:改变作用范围,不改变存储位置

    static 局部变量:改变存储位置,不改变作用范围

    静态函数 :在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。

    如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数也称为内部函数。定义一个内部函数,只需在函数类型前再加一个“static”关键字即可。

    展开全文
  • Using命名空间作用9.2

    千次阅读 2016-09-02 09:17:09
    刚开始编程的程序员在给unity项目写脚本的时候,看到自己新建好的一个类,系统会在脚本开头自动写入 using System; using UnityEngine;...这些代码在脚本中有什么作用呢...就是到导入操作系统命名空间,using Un

    刚开始编程的程序员在给unity项目写脚本的时候,看到自己新建好的一个类,系统会在脚本开头自动写入

    using System;

    using UnityEngine;

    ...

    这几行代码。比如

    unity脚本中为何要导入命名空间?

    这些代码在脚本中有什么作用呢?不写行不行?

    Useing XX表示导入某个命名空间。比如说using System;就是到导入操作系统命名空间,using UnityEngine;就是导入unity引擎程序的命名空间。高级语言总是依赖于许多系统或程序预定义的元素,如果在脚本开头导入预定义的元素,这样在自己的程序中就可以自由地使用这些元素。
    如果没有导入名字空间的话,程序还能正确运行吗?比如我们注释掉第一行

    unity脚本中为何要导入命名空间?

     

    马上看到MonoBehaviour,变红出错了。程序认为找不到自定义类Debug要继承的父类。但是如果我们改成这样,UnityEngine.MonoBehaviour,错误就消失了。在MonoBehaviour前面加上UnityEngine和连接符“.”,告诉程序MonoBehaviour来自UnityEngine命名空间,这样脚本就知道该去哪里找到这个类了。但是这样做的麻烦在于每次调用时都要写“命名空间.XX”,所以只要在脚本头一次导入,后面就省事多了。

    unity脚本中为何要导入命名空间?

    举例来看一下实际项目代码中常用到的命名空间:

    unity脚本中为何要导入命名空间?

    下面总结一下system常用的命名空间:

    System命名空间包含所有的基础类。

     using System.Collections;  

      有ArrayList;Hashtable;Stack;Queue;DictionaryEntry;等集合  

         

     using System.Reflection;  

       获取Assembly 的属性值  

         

     using System.Data;  

       访问和操作数据库等类  

         

     using System.Drawing;     

       图像,画笔

         

     using System.IO;  

       对文件、文件夹的操作  

         

     using System.Media;  

       播放wav和系统wav文件  

         

     using System.Net;  

       操作网络  

         

     using System.Runtime;  

       运行时的各种信息  

         

     using System.Security;  

       用于安全和加密  

         

     using System.Text;  

       各种编码方式和正则表达式  

        

     using System.Threading;    

       多线程  

         

    .using System.Web;  

       asp.net的web编程  

         

    .using System.Windows.Forms;  

       各种控件  

         

    .using System.Xml;    

       操作xml文件  

         

     

    在unity官网可以看到UnityEngine命名空间的子目录,具体内容在写代码的时候查阅。

    unity脚本中为何要导入命名空间?

    展开全文
  • ::是运算符中等级最高的,它分为三种:全局作用域符,类作用域符,命名空间作用域符。他们都是左关联(left-associativity)。他们的作用都是为了更明确的调用你想要的变量,他们算是C++中的基础,如果运用的好的话,...
           ::是运算符中等级最高的,它分为三种:全局作用域符,类作用域符,命名空间作用域符。他们都是左关联(left-associativity)。他们的作用都是为了更明确的调用你想要的变量,他们算是C++中的基础,如果运用的好的话,程序的出错率会降很多。
     
    展开全文
  • 1.函数原型作用域: 此作用域为c++程序中最小的作用域,生存周期最短。 例:int func(int i) i为参数,作用域类型为函数原型类型。 2.局部作用域:
  • 命名空间的三种使用方法 #include "stdafx.h" #include using namespace std; //标准库的命名空间 解包了所有此空间下的内容 //命名空间的关键字(key word) namespace + 空间名 namespace Space { int x; int ...
  • 命名空间在python中无处不在,简直屌到爆炸:全局,内建&lt;builtins&gt;,如果有函数执行则有局部命名空间, 对象命名空间(包含了class类对象,实例对象,模块对象...),都有命名空间.命名空间就是变量到对象的...
  • python之命名空间作用

    万次阅读 2020-09-07 11:22:37
    命名空间 命名空间是名称到对象的映射,一般有三种: 内置名称:python自带的 全局名称:模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。 局部名称:模块中定义的名称,...
  • 命名空间的含义和作用

    千次阅读 2019-04-20 16:20:37
    * 掌握:命名空间作用及定义;如何使用命名空间。 * 了解:使用早期的函数库 重点、难点 ◆命名空间作用及定义;如何使用命名空间。 在学习本书前面各章时,读者已经多次看到在程序中用了以下语句: using ...
  • 命名空间

    2015-05-04 11:30:07
    命名空间分割了全局命名空间,其中每个命名空间是一个作用域。命名空间定义 一个命名空间的定义包含两部分:首先是关键字namespace,随后是命名空间的名字。在命名空间名字后面是一系列由花括号括起来的声明和定义...
  • 命名空间主要解决class类/function 函数/常量 等一些的命名冲突问题 比如:标题文章和图片文章我们两个类名都命名为article就会冲突,就会去选择修改类名来解决此类冲突,如果使用命名空间,就可以两个都用article,...
  • C++中的命名空间及其作用

    千次阅读 多人点赞 2019-04-04 20:38:56
    命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。 在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用...
  • 命名空间作用与使用方法

    千次阅读 2019-01-03 10:16:18
    namespace即“命名空间”,也称“名称空间” 、”名字空间”。如果两个人写的库文件中出现同名的变量或函数(不可避免) ,使用起来就有问题了。为了解决这个问题,引入...命名空间作用:是建立一些互相分隔的作用域...
  • Android总结:命名空间

    万次阅读 2016-12-30 15:44:10
    1.命名空间作用 作用:提供避免元素命名冲突的方法,里面存放的是特性属性的集合; 例如:Android的View存在id属性—代表View的唯一id,而你自定义的View也想自定义一个id属性—代表该类型View编号。那么这个时候...
  • c++中命名空间作用

    千次阅读 2018-12-11 23:28:29
    命名空间作用命名空间(namespace)是一种将相关的类型进行分组的逻辑命名方案。它将各种命名实体进行分组,各组间可以互不影响,避免出现重名,这与jave的包机制类似。学习本章,读者可以更好理解大型开发中...
  • C++ 定义命名空间 , 作用

    千次阅读 2018-09-03 11:42:24
     命名空间:对作用域命名 命名空间分类:  系统命名空间: std  自定义义的命名空间:   首先我们写一个 test.cpp . #include&lt;iostream&gt; using namespace std; int a =200; void fun() { ...
  • 命名空间namespace的作用

    千次阅读 2017-08-08 10:39:15
    说起命名空间的,我们经常会用到这样的语句:using namespace std; using namespace cv;using namespace boost等等,这些都是一些标准库或者第三方库的命名空间。在实际应用过程中,特别是自定义的类或者函数时,...
  • C++ 命名空间-namespace作用与使用方法详解

    千次阅读 多人点赞 2017-06-27 17:49:37
    1、为什么需要命名空间命名空间是ANSI C++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。 在c++中有4层次的作用域:文件、函数、类、复合语句。在不同的作用域中可以定义名字相同
  • Python的命名空间作用

    千次阅读 2014-07-25 16:18:17
    Python命名空间是名称到对象的映射,
  • 本人对其进行整理,列出其目录并摘录主要...命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。 二、什么是命名空间?  命名空间:实际上就是一个由程序设计者命名的内存区域,程序
  • 命名空间及匿名命名空间

    千次阅读 2013-10-10 10:44:11
    命名空间单独提出来描述是因为:命名空间的功能几乎和前缀是一致的。 1. 使用命名空间的必要性  在一个大的项目中,当多时合作时,多个人编写的库头文件中,不可以避免的存在变量名相同的冲突,特别都是作为...
  • 学校的人事部门保存了有关学生的部分数据(学号、姓名、年龄、住址),教务部门也保存了学生的另外一些数据(学号、姓名、性别、成绩),...解:命名空间是用户命名的作用域,用来处理程序中常见的同名冲突。命名空间::
  • C++命名空间

    千次阅读 多人点赞 2021-02-10 21:49:52
    文章目录定义命名空间的格式使用定义好的命名空间:嵌套命名空间不连续的命名空间 以前上课在Android studio上用java写代码的时候,有一个函数明明和书上一样,但就是出错,捣鼓了半天,原来是包导错了,为了耍帅,...
  • C++中的命名空间

    2015-04-24 10:19:41
    来源:维基百科 在C++语言中,命名空间是一种实体,使用namespace来声明...和C语言的文件作用域兼容,C++具有全局命名空间作用域,对应的命名空间是全局命名空间,不需要声明。用前缀为::的qualified-id显式引用
  • 命名空间以及using的作用  命名空间就像在文件系统中用一个文件夹容纳多个文件一样,可以看作某些类的一个容器。 通过把类放入命名空间可以把相关的类组织起来,并且可以避免命名冲突。 命名空间既用于程序的“内部...
  • C++ 命名空间namespace

    千次阅读 2014-02-02 17:47:32
    作用域与命名空间定义命名空间使用命名空间命名空间的名称 原文来自:http://blog.csdn.net/touzani/article/details/1637776 命名空间 在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、...
  • C++ 命名空间以及自定义命名空间

    千次阅读 2019-09-25 22:31:21
    C++命名空间 1. C++中的命名空间 标准命名空间 namespace std C++在一般的库文件以及常规操作都需要包含C++标准的命名空间std,用户在使用等头文件时,C++标准把所有的有关stream中的关键字都加上了std的命名空间。...
  • 这篇文章主要介绍了Python编程中的命名空间作用域,是Python入门学习中的重要知识,需要的朋友可以参考下 变量是拥有匹配对象的名字(标识符)。命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 296,075
精华内容 118,430
关键字:

命名空间的作用