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

    千次阅读 2017-05-27 17:46:14
    命名空间的作用命名空间是为了防止名字冲突提供更加可控的机制。命名空间分割了全局命名空间,其中每一个命名空间是一个作用域。命名空间的定义命名空间由三部分组成,分别是namespace、空间名字和一系列由花括号括...

    命名空间的作用

    命名空间是为了防止名字冲突提供更加可控的机制。命名空间分割了全局命名空间,其中每一个命名空间是一个作用域。

    命名空间的定义

    命名空间由三部分组成,分别是namespace、空间名字和一系列由花括号括起来的声明和定义。只要能出现在全局作用域中的声明都能置于命名空间中,例如:类、变量(及其初始化操作)、函数(及其定义)、模板和其他命名空间等。

    命名空间的定义既可以定义在全局变量的作用域内,也可以定义在其他的命名空间中,但是不能定义在函数或者类的内部。

    命名空间的定义可以是不连续的,定义在该命名空间的名字可以被其他命名空间中的其他成员直接访问,也可以被这些成员内嵌作用域中的任何单位访问。命名空间可以不连续的特性使我们可以将几个独立的接口和实现文件组成一个命名空间:

    1. 命名空间的一部分成员的作用是定义类,以及声明作为类接口的函数及对象,则这些成员应该置于头文件中,这些头文件将被包含在使用了这些成员的文件中
    2. 命名空间成员的定义部分则置于另外的源文件中

    并且命名空间的外部来定义该命名空间的成员,例如:

    cplusplus_primer::Sales_data
    cplusplus_primer::operator+(const Sales_data& lhs
                                const Sales_data& rhs)
    {
        Sales_data ret(lhs);
    }

    需要注意的是一般不把#include放到命名空间的内部。这样做了这就意味着把头文件中的所有的名字定义成该命名空间的成员。

    全局命名空间

    全局作用域定义的名字就是定义在全局命名空间中,全局命名空间以隐式的方式声明,并且任何程序中多存在全局命名空间。由于全局命名空间是隐式的,所以并没有名字,通常是通过以下的方式来实现访问的:

    ::number_name
    

    嵌套的命名空间

    内层命名空间声明的名字将会隐藏外层命名空间声明的同名成员,在嵌套的内层命名空间中定义的名字只有在内层命名空间中有效,外层命名空间要想访问它必须添加命名空间的前缀符进行限定。

    内联命名空间

    与普通的命名空间不同,内联命名空间的名字可以直接被外层的命名空间直接使用,无需添加该内联命名空间的名字作为前缀进行限定。当应用程序的代码在一次发布和另一次发布之间进行了改变时,通常使用这个机制。使用方式如下:

    头文件FifthEd.h

    inline namespace FifthEd
    {}
    
    namespace FifthEd//inline 关键字必须出现在命名空间第一次定义的地方,但是后续打开该命名空间时可以不写该关键字
    {
        class Query_base{};
    }

    头文件FourthEd.h

    namespace FourthEd
    {
        class Item_base{};
    }

    于是在cplusplus的命名空间中可以如下进行定义

    namespace cplusplus_primer{
        #include "FourthEd.h"
        #include "FifthEd.h"
    }

    按照上述的使用方式,如果想获得FifthEd中的类,可以使用cplusplus_primer::进行限定;如果想获得FourthEd中的类,可以使用cplusplus_primer::FourthEd::进行限定。

    未命名的命名空间

    未命名的命名空间指的是namespace后面紧跟这花括号。未命名的命名空间中定义的成员拥有静态声明周期,在程序第一次创建之前使用,并且直到程序结束时才会销毁。

    之所以提出未命名的命名空间的原因是:在早期时C++将变量声明成static以使其对于整个文件都有效,但是后来在文件中进行静态声明的方式已经被C++标准取消了,现在的方式使用未命名的命名空间来取代static。

    注意
    1. 一个未命名的命名空间可以在某一个给定的文件中不连续,但是,不可以跨越多个文件。
    2. 每一个文件定义自己的未明名的名字空间,如果两个文件都有未命名的名字空间,则这两个命名空间没有关系。
    3. 不同的两个文件中的未命名的命名空间中可以定义相同的名字,并且这些名字属于不同的实体。
    4. 如果一个头文件定义了一个未命名的命名空间,则包含该头文件的文件中对应不同的实体。
    5. 未命名的命名空间的名字的作用域与该命名空间所在的作用域相同。

    未命名的命名空间也可以嵌套,例如:

    namespace local {
        namespace {
            int i;
        }
    }
    local::i = 42;  // 正确
    

    使用命名空间成员

    命名空间别名

    别名的声明方式如下:

    namespace cplusplus_primer
    {
    }
    
    namespace primer = cplusplus_primer;
    注意
    1. 必须是在命名空间定义之前就声明别名。
    2. 一个命名空间可以有好几个同义词或者别名,所有的别名都与命名空间原来的名字等价。

    using声明

    一个 using 声明一次只引入一个命名空间成员。using 声明的作用域从 using 声明点开始,直到包含 using 声明的作用域的末尾,名字都是可见的,外部作用域中定义的同名实体被屏蔽。在有效作用域结束之后,就必须使用完整的经过限定的名字。using 声明可以出现在全局、局部、类的作用域 和 名字空间中。在类作用域中using声明只能引用基类成员。

    using指示

    一个 using 声明一次引入一个特定命名空间的所有成员。using 指示可以出现在全局、局部的作用域 和 名字空间中,不会出现在类的作用域中。与using声明不同的是,using声明的名字的作用域与using声明的语句的作用域一致;using指示将所声明的命名空间的所有成员提升到同时包含命名空间和using指示的最近作用域。

    using声明、指示和头文件

    如果头文件中在其顶层作用域中包含using指示或者using声明,则会将该命名空间中的名字包含到所有包含该名字的文件中。所以通常在函数或者命名空间中使用using指示或者using声明。

    参考链接:
    C++名字空间/C++命名空间
    C++学习之命名空间

    展开全文
  • C++ 命名空间以及自定义命名空间

    千次阅读 2019-09-25 22:31:21
    C++命名空间 1. C++中的命名空间 标准命名空间 namespace std C++在一般的库文件以及常规操作都需要包含C++标准的命名空间std,用户在使用等头文件时,C++标准把所有的有关stream中的关键字都加上了std的命名空间。...

    C++命名空间

    1. C++中的命名空间

    标准命名空间 namespace std

    C++在一般的库文件以及常规操作都需要包含C++标准的命名空间std,用户在使用等头文件时,C++标准把所有的有关stream中的关键字都加上了std的命名空间。所以用户在使用该库文件中的关键字时,需要加上命名空间。
    使用格式:

    std::cout<< a << std::endl;
    //需要加上std空间名
    

    或者

    #include<iostream>
    using namespace std;//直接使用命名空间std
    cout<< a << endl;
    

    用户自定义命名空间

    用户在使用C++时,肯定在某些时候需要使用自己命名空间,所以,C++给出了用户使用自己命名空间的方法。
    namespace name{}

    namespace mynamespace{
    int num = 10;
    void func()
    {}
    ...
    }
    //访问方式
    mynamespace::num;
    mynamespace::func();
    

    访问的时候需要加上自己的命名空间名字,这样就可以正长进行访问了。

    命名空间也是一个独立的作用域

    用户或者C++本身定义了命名空间后,在该命名空间中也是一个独立的作用域,可以和其他作用域中存在相同名称的变量和函数。

    命名空间的重要性

    • 可以使不用用户在相同工程下的名称相同的变量分隔开来,这样可以使效率更高。
    • 使用命名空间可以更为清晰明了的表明用户定义的变量/函数在哪个地方,使得其他观看者更为清除的观赏代码。
    • 不同作用域下可以使定义的变量函数更为严谨。
    展开全文
  • JAXB命名空间命名空间前缀处理

    千次阅读 2019-07-02 14:26:32
    JAXB命名空间命名空间前缀处理 - 懒惰的肥兔 - 博客园
    展开全文
  • C++命名空间

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

    以前上课在Android studio上用java写代码的时候,有一个函数明明和书上一样,但就是出错,捣鼓了半天,原来是包导错了,为了耍帅,手一快,package xxxxx 这个包就是java中的命名空间,刚学java的时候,老师总是会让我们建一个包,但后来发现包这个东西,可有可无(其实是代码写的太少,根本不可能重名)。

    相对于java,C++更不是省油的灯,在C++中,变量、函数和类更是大量存在的。如果没有命名空间,这些变量、函数、类的名称将都存在于全局命名空间中,会导致很多冲突,所以C++也有它自己的命名空间,而类似于命名空间之类的知识点,大多数都需要我们建立在一定的代码基础上才能够理解它(我相信刚开始有很多人不理解为什么要有C++),这也是为什么很多C++入门书刚开始只是说using namespace std 这个叫命名空间,加上就好,并没有细说。

    定义命名空间的格式

    namespace dog{
    	//你的函数名,变量名
    	getcode();
    	int dog;
    }
    

    使用定义好的命名空间:

    //可以使用using在代码里面添加全部
    using namespace dog;
    dog = 1;
    getcode();
    
    //可以使用using指出单个要使用的变量或者函数
    using dog::dog;
    using dog::getcode();
    dog = 1;
    getcode();
    
    //也可以在使用它们的时候添加单独一个变量或者函数
    dog::dog = 1;
    dog::getcode();
    

    using也是C++中的一个关键字,至于std,标准C++把自己的整个库都定义在std命名空间中。

    嵌套命名空间

    就好像双重for的写法一样,命名空间,也可以进行嵌套。

    namespace animal {
    		//声明
    		namespace person{
    		//声明
    		}
    }
    
    //如果想使用person
    using namespace animal::person;
    //如果想使用animal(如同i定义在for的作用域相似,如果直接使用animal,那么person的声明也在使用范围之内。)
    using namespace animal;
    

    不连续的命名空间

    命名空间可以定义在几个不同的部分中,因此命名空间是由几个单独定义的部分组成的。一个命名空间的各个组成部分可以分散在多个文件中。

    //当在A文件中有一个命名空间
    namespace dog{
    //代码
    }
    
    //如果这时B文件再定义一个相同的命名空间,在这之前,A中已经定义,所以在B中再次定义,可以理解为增加新元素
    namespcae cat{
    //代码
    }
    
    展开全文
  • 4 p命名空间和c命名空间在通过构造方法或set方法给bean注入关联项时通常是通过constructor-arg元素和property元素来定义的。在有了p命名空间和c命名空间时我们可以简单的把它们当做bean的一个属性来进行定义。4.1 p...
  • std空间和全局命名空间

    千次阅读 2015-09-02 09:54:34
    命名空间
  • TypeScript-命名空间

    万次阅读 2020-07-25 11:04:30
    同Java的包、.Net的命名空间一样,TypeScript的命名空间可以将代码包裹起来, 只对外暴露需要在外部访问的对象。命名空间内的对象通过export关键字对外暴露。 命名空间和模块的区别: 命名空间:内部模块,主要...
  • 命名空间及匿名命名空间

    千次阅读 2013-10-10 10:44:11
    命名空间单独提出来描述是因为:命名空间的功能几乎和前缀是一致的。 1. 使用命名空间的必要性  在一个大的项目中,当多时合作时,多个人编写的库头文件中,不可以避免的存在变量名相同的冲突,特别都是作为...
  • python命名空间

    千次阅读 2020-02-28 09:08:02
    命名空间 有三种 内置命名空间 —— python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被加载进内存里 全局命名空间 —— 我们写的代码但不是函数中的代码 是...
  • 1. 声明了命名空间之后,下面的const, function, class都会划归到该命名空间。 2. 只有声明过命名空间的PHP 文件才能加载有命名空间的PHP文件。 3. PHP 5.3 及以上才能使用命名空间 名词: 关键字:namespace 用来...
  • std命名空间

    千次阅读 2019-05-15 19:05:00
    C++ std命名空间 1. 什么是命名空间 在编程语言中,命名空间是一种特殊的作用域,它包含了处于该作用域中的所有标示符,而且其本身也是由标示符表示的。命名空间的使用目的是为了将逻辑相关的标示符限定在一起,...
  • 首先要了解什么是包的根命名空间与默认命名空间  根命名空间,即namespace="/"。  默认命名空间,即namespace="",或者没有给namespace赋值,这两种写法是等价的 如果请求为/test/search/get.action,系统首先...
  • HBase命名空间

    千次阅读 2018-05-07 19:11:40
    HBase命名空间 1.什么是命名空间? 我的理解就是:对hbase中表的逻辑划分,就类似于c#语言中的命名空间【对代码进行分类】一样。 2.针对命名空间,基本的操作如下: //1.创建一个命名空间:"haha" ...
  • C++ 命名空间,也有叫名称空间

    千次阅读 2020-12-06 23:10:29
    为了避免在大规模程序设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。 std是c++标准命名...
  • 今天遇到一个问题,在一个类库项目里引用另一个自定义控件库项目里的命名空间时,提示找不到命名空间,很怪,明明命名空间存在,折腾了很久,最后发现,是同事把我的类库项目的目标框架改了,然后我把两个项目的目标...
  • C#之命名空间

    千次阅读 2020-01-14 13:59:52
    命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明类的名称与另一个命名空间中声明的相同的类名称不冲突。 定义命名空间命名空间的定义是以关键字namespace开始,后跟命名空间...
  • HBase入门基本:命名空间、建表、增删改查

    万次阅读 多人点赞 2018-11-02 16:14:08
    进入HBase数据库 # hbase shell 注意HBase Shell 中的回格键没用,要用【Ctrl+Backspace】,每个命令之后不...列出所有命名空间 hbase&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; list_namespace 新建命名
  • oracle命名空间

    2017-05-25 21:22:18
    oracle命名空间
  • 1、什么是命名空间命名空间设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。 我们举一个计算机系统中的例子,一个...
  • K8S命名空间

    千次阅读 2020-05-25 22:16:53
    1、简介Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。这些虚拟集群被称为命名空间。2、如何使用命名空间命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有...
  • 命名空间应用

    千次阅读 2018-05-30 23:06:55
    什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,...
  • C 命名空间

    千次阅读 2018-06-25 12:26:22
    以前看过一本《C语言参考手册》,其中讲解了命名空间,这几天在学习C的基础语法,故而总结下。 C命名空间分为独立(各个空间即使出现重名也不会影响)的下面个空间。第一类基础类型空间eg: 整形(char short int long)...
  • 1.命名空间的作用  C#中的类是利用命名空间组织起来的。命名空间提供了一种从逻辑上组织类的方式,防止命名冲突。  命名空间声明:用namespace 关键字用于声明一个命名空间。此命名空间范围允许您组织代码并为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,808
精华内容 35,523
关键字:

命名空间