精华内容
下载资源
问答
  • 命名空间的一个疑问】 请问:在程序中直接用  pDlg = ::AfxGetMainWnd(); 像这样限定符"::" 前面没有命名空间名的情况,是什么意思?我记得好像是全局的意思,不确定。 笔记内容: 转载自:...
    【命名空间的一个疑问】
    请问:在程序中直接用
        pDlg = ::AfxGetMainWnd();
    像这样限定符"::" 前面没有命名空间名的情况,是什么意思?我记得好像是全局的意思,不确定。


    笔记内容:
    转载自:http://blog.csdn.net/passball/article/details/6630877

    《C++命名空间》


    五、 无名的命名空间
    以上介绍的是有名字的命名空间,C++还允许使用没有名字的命名空间,如在文件A中声明了以下的无名命名空间:
    namespace //命名空间没有名字
    { void fun( ) //定义命名空间成员
    { cout<<"OK."<<endl;}
    }
    由于命名空间没有名字,在其他文件中显然无法引用,它只在本文件的作用域内有效。无名命名空间的成员fun函数的作用域为文件A(确切地说,是从声明无名命名空间的位置开始到文件A结束)。在文件A中使用无名命名空间的成员,不必(也无法)用命名空间名限定。
    如果在文件A中有以下语句:
    fun();
    则执行无名命名空间中的成员fun函数,输出”OK.”。

    在本程序中的其他文件中也无法使用该fun函数,也就是把fun函数的作用域限制在本文件范围中。可以联想到:在C浯言中可以用static声明一个函数,其作用也是使该函数的作用域限于本文件。C++保留了用static声明函数的用法,同时提供了用无名命名空间来实现这一功能。随着越来越多的C++编译系统实现了ANSI C++建议的命名空间的机制,相信使用无名命名空间成员的方法将会取代以前习惯用的对全局变量的静态声明。



    展开全文
  • 1.命名空间的作用  C#中的类是利用命名空间组织起来的。命名空间提供了种从逻辑上组织类的方式,防止命名冲突。  命名空间声明:用namespace 关键字用于声明个命名空间。此命名空间范围允许您组织代码并为...

    1.命名空间的作用

        C#中的类是利用命名空间组织起来的。命名空间提供了一种从逻辑上组织类的方式,防止命名冲突。

        命名空间声明:用namespace 关键字用于声明一个命名空间。此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法。

    namespace name
    {
    类型定义
    }
        其中:在命名空间中,可以声明类、接口、结构、枚举、委托 命名空间。
    展开全文
  • 命名空间

    千次阅读 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++学习之命名空间

    展开全文
  • typescript的命名空间

    2018-12-17 16:20:34
    命名空间的作用 防止变量冲突; 构建大型项目时候大家可以分成不同的模块开发; 命名空间写法 命名空间可以将代码包裹起来,只对外暴露需要在外部访问的对象。 namespace + 空间名; 命名空间内的对象通过export...

    命名空间的作用

    1. 防止变量冲突;
    2. 构建大型项目时候大家可以分成不同的模块开发;

    命名空间写法

    命名空间可以将代码包裹起来,只对外暴露需要在外部访问的对象。

     1. namespace + 空间名;
     2. 命名空间内的对象通过export关键字对外暴露;
    

    命名空间引入

    通过import可以引入这个模块,并且在在引用命名空间时,可以通过import关键字起一个别名

    命名空间实例

        namespace shuai{
          export class Youchen{
            public name:string  = "shuai";
            talk(){
              console.log("123");
            }
          }
        }
        
        namespace chou{
          export class Youchen{
            public name:string  = "chou";
            talk(){
              console.log("456");
            }
          }
        }
        
        let people:shuai.Youchen = new  shuai.Youchen();
        let dog:chou.Youchen = new  chou.Youchen();
        
        console.log(people.name);
        console.log(dog.name);
    
    展开全文
  • 详细解读php的命名空间

    千次阅读 2017-12-22 17:23:53
    php的命名空间功能已经出来很久了,但是一直...命名空间概念:命名空间种封装事物方法,类似于目录和文件。 命名空间解决问题(手册上也写很清楚,下面按照自己理解简化了): 1:解决程序编写者自
  • 命名空间()

    2013-05-08 19:04:44
    (2)命名空间的定义:namespace+命名空间名字。 *格式:namespace namespace_name{/*声明和定义*/} //不加分号 如果namespace_name不是引用前面定义的命名空间,则该名字创建新的命名空间,否则,这个定义打开
  • c++命名空间

    千次阅读 2011-07-27 10:52:18
    介绍C++命名空间的一篇文章,刚刚学C++的时候,我被满篇的域作用符号::都搞晕了。这篇文章终于让我熟悉了C++的命名空间(为什么需要命名空间、如何使用命名空间)。当然,觉得java的import机制更加优雅,至少没有...
  • PHP中的命名空间

    千次阅读 2015-09-01 13:50:24
    概述命名空间的作用是解决命名冲突定义命名空间虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和traits)、接口、函数和常量。 命名空间通过关键字...
  • 若两个命名空间不在同个项目中,则变成两个程序集之间互相引用。 程序集之间引用无所谓循环不循环问题。 但如果两个程序集要互相引用,并且两个程序集项目在个解决方案中,添加引用时不要用项目...
  • C++的命名空间

    千次阅读 2015-04-29 11:11:08
    1、命名空间的由来: 个程序由多个模块组成,而不同的模块中全局变量名或函数名相同的问题不可避免,这将会产生链接错误。C++中引入命名空间的概念就是为了解决名称冲突问题。 2、命名空间的本质(个人观点): ...
  • C#中的命名空间

    千次阅读 2020-01-31 11:46:42
    命名空间是为了让组名称与其他名称分隔开,在命名空间中声明类名与另命名空间中声明相同类名并不冲突 例如计算机系统中,个文件夹中可以包含多个文件夹,每个文件夹中不能有相同文件名,但是...
  • 命名空间及匿名命名空间

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

    2017-11-21 07:52:22
    Less中的命名空间 当我们拥有了大量选择器时候,特别是团队协同开发时,如何保证选择器之间重名问题?如果你是 java 程序员或 C++ 程序员,我猜你肯定会想到命名空间 Namespaces。 Less 也采用命名空间来对名字...
  • 命名空间中声明名称与另命名空间中声明相同名称不冲突。 我们举个计算机系统中例子,个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同文件名,但不同文件夹中文件...
  • 关于python的命名空间

    2019-01-17 19:56:04
    命名空间分为内置命名空间、全局命名空间和局部命名空间 内置命名空间: python解释器启动就可以使用的名字,内置的名字再启动解释器后被加载进...在局部可以使用全局、内置及本地局部的命名空间的名字,在全局...
  • 例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同个目录中不能...
  • -- 登录 后跳转到另外命名空间 --> <param name="namespace">/index <param name="actionName">forward <result name="nopassword">/WEB-INF/jsp/index/valid/pwderror.jsp ...
  • 配置包时,有个可选namespace属性,用于指定该包对应的命名空间。若没有指定namespace属性,则该包下 所有Action处于默认命名空间下。 而根命名空间是指namespace="/",默认命名空间为 namespace=""。 ...
  • 什么是命名空间? 字面意思来理解,命名空间主要有两个点——“名字”和“空间”。通过这两个关键词,我给大家简单描述一下什么是命名空间(看下面↓) 举个例子:有个学校,世界之大无奇不有,恰恰这个学校就...
  • C++命名空间

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

    千次阅读 2017-03-17 09:08:18
    ASP.NET的命名空间  命名空间(namespace) ... 命名空间不过是数据类型的一种组合方式,但是,命名空间中所有数据类型的名称,都会自动加上该命名空间的名字作为前缀。   命名空间还可以相互嵌套
  • 命名空间的概念

    2012-12-20 20:12:13
    命名空间的概念  很多初学C++的人,对于C++中的一些基本的但又不常用的概念感到模糊,命名空间(namespace)就是这样个概念。 C++中采用的是单一的全局变量命名空间。在这单一的空间中,如果有两个变量或函数...
  • Python的命名空间解析

    千次阅读 2017-11-26 11:54:47
    什么是命名空间 命名空间有哪些 变量查找原则 分析个UnboundLocalError例子

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,570
精华内容 17,428
关键字:

命名空间的一