C++的namespace 命名空间的作用
使用命名空间的好处

正如某个学校有两个班级,每个班级里都有一个叫小明的人。如果在早操大会上点名小明,那么这两个小 明都不知道点的是谁,如果指定一下,说是一班的小明,那么二班的小明就不会认为是自己了。命名空间 就起到了这个区分的作用,在主函数中,可以显式的对类进行访问,示例代码如下所示。 +展开 -C#namespace Programmer1//程序员1的命名空间 { public class Animal // Programmer1的Animal类 { public string type;//声明字段 } } namespace Programmer2//程序员2的命名空间 { public class Animal// Programmer2的Animal类 { public string type;//声明字段 } } namespace MyClass//主程序的命名空间 { class Program//主程序类 { static void Main(string[] args) //主程序入口方法 { Programmer1.Animal bird = new Programmer1.Animal();//说明是程序员1的命名空间下的Animal bird.type = "bird"; //初始化字段 } }
分层设计中使用命名空间
从上一节中可以看出,命名空间的使用可以对相同名称的类进行 较好的规范。但是,在同一层代码块中,似乎很少使用命名空间 来规范。而在分层设计中,命名空间的使用是非常必要的,虽然 初学者不需要详细的了解分层设计,但是分层设计在软件开发过 程当中是非常必要的,使用Visual Studio 2008能够轻松的创建 分层构架软件。 在解决方案资源管理器中选择当前解决方案,右击【解决方 案】项目,在下拉菜单中选择【添加】选项,在【添加】的下拉 菜单中选择【新建项目】选项。若无法在解决方案管理器中看见 解决方案,则可以在菜单栏的【工具】选项中选择【选项】菜单 并在弹出窗口中找到【项目和解决方案】窗口,在窗口中选中 【总是显示解决方案】复选框即可配置解决方案管理器,如图32所示。
namespace是什么意思

namespace是什么意思namespace即"命名空间",也称"名称空间" 、"名字空间"。
中的各种语言使用的一种代码组织的形式通过名称空间来分类,区别不同的代码功能同时也是中所有类的完全名称的一部分。
范围所谓namespace,是指标识符的各种可见范围。
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
一:<iostream>和<iostream.h>格式不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
二: 由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:1、直接指定标识符。
例如std::ostream而不是ostream。
完整语句如下: std::cout << std::hex << 3.4 << std::endl;2、使用using关键字。
using std::cout; using std::endl; using std::cin; 以上程序可以写成cout << std::hex << 3.4 << endl;3、最方便的就是使用using namespace std; 例如: using namespace std;这样命名空间std内定义的所有标识符都有效(曝光)。
PHP命名空间(Namespace)的使用详解

PHP命名空间(Namespace)的使⽤详解命名空间⼀个最明确的⽬的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产⽣⼀个致命的错误。
这种情况下只要避免命名重复就可以解决,最常见的⼀种做法是约定⼀个前缀。
例:项⽬中有两个模块:article和message board,它们各⾃有⼀个处理⽤户留⾔的类Comment。
之后我可能想要增加对所有⽤户留⾔的⼀些信息统计功能,⽐如说我想得到所有留⾔的数量。
这时候调⽤它们Comment提供的⽅法是很好的做法,但是同时引⼊各⾃的Comment类显然是不⾏的,代码会出错,在另⼀个地⽅重写任何⼀个Comment也会降低维护性。
那这时只能重构类名,我约定了⼀个命名规则,在类名前⾯加上模块名,像这样:Article_Comment、MessageBoard_Comment可以看到,名字变得很长,那意味着以后使⽤Comment的时候会写上更多的代码(⾄少字符多了)。
并且,以后如果要对各个模块增加更多的⼀些整合功能,或者是互相调⽤,发⽣重名的时候就需要重构名字。
当然在项⽬开始的时候就注意到这个问题,并规定命名规则就能很好的避免这个问题。
另⼀个解决⽅法可以考虑使⽤命名空间。
注明:本⽂提到的常量:PHP5.3开始const关键字可以⽤在类的外部。
const和define都是⽤来声明常量的(它们的区别不详述),但是在命名空间⾥,define的作⽤是全局的,⽽const则作⽤于当前空间。
我在⽂中提到的常量是指使⽤const声明的常量。
基础命名空间将代码划分出不同的空间(区域),每个空间的常量、函数、类(为了偷懒,我下边都将它们称为元素)的名字互不影响,这个有点类似我们常常提到的’封装’的概念。
创建⼀个命名空间需要使⽤namespace关键字,这样:<?php//创建⼀个名为'Article'的命名空间namespace Article;>要注意的是,当前脚本⽂件的第⼀个命名空间前⾯不能有任何代码,下⾯的写法都是错误的:例⼀//在脚本前⾯写了⼀些逻辑代码<?php$path = "/";class Comment { }namespace Article;>例⼆</html><?phpnamespace Article;>为什么要说第⼀个命名空间呢?因为同⼀脚本⽂件中可以创建多个命名空间。
C#命名空间(namespace)不可不知的那些事

C#命名空间(namespace)不可不知的那些事 命名空间本质上就是⼀个逻辑分组,就和我们⽂件夹分组是⼀致的,允许我们将相关的类型集合在⼀起。
命名空间是⼀个⽐较通⽤的概念,在很多语⾔⾥⾯都存在,只不过可能存在⼀些细微差别以及使⽤不同的名称。
⽐如Java就叫包(package)。
接下来,我们将从以下五个⽅⾯来讲解命名空间: 定义命名空间使⽤命名空间正确理解命名空间含义使⽤命名空间alias解决简单类名冲突使⽤extern alias解决Assembly中的完整类名冲突定义命名空间 命名空间的定义很简单,是以关键字namespace(命名空间的英⽂名)开始,后跟命名空间的名字和⼀对⼤括号。
⼤括号⾥的内容都属于这个命名空间。
格式如下: namespace namespace_name { } namespace_name是以点号(.)作为层级隔离的。
⽐如System.IO就可以认为System是第⼀层命名空间,IO是第⼆层命名空间。
由于命名空间其实就是⼀个逻辑分组,所以namespace这个关键字,我们可以理解为“如果不存在namespace_name这个命名空间,就创建⼀个。
如果存在,就使⽤这个命名空间”。
因此,我们是可以在多个地⽅定义同⼀个命名空间的,只要保证同⼀个命名空间中的内容不冲突即可,如下: namespace System.IO { class MemoryStream {} } namespace System.IO { class BufferedStream {} }使⽤命名空间 在程序中使⽤特定类型的时候,我们需要使⽤完整的限定名,⽐如System.IO.MemoryStream。
但是如果每次都这么写,除了增加了开发⼈员打字的成本,毫⽆益处。
因此我们可以使⽤using关键字来表明我们需要使⽤某个命名空间中的类型。
如下: //使⽤完整限定名 public static void Main() { System.Text.StringBuilder sb=new System.Text.StringBuilder(); } //使⽤using 关键字 using System.Text; public static void Main() { StringBuilder sb=new StringBuilder(); } using关键字,其实是告诉编译器可以尝试在这个特定的命名空间中查找类型。
c#中的名称空间(namespace)

9. 名称空间9.1 编译单元9.2 名称空间声明9.3 使用指示9.3.1 使用别名指示9.3.2 使用名称空间指示9.4 名称空间成员9.5 类型声明C#程序用名称空间来组织。
名称空间用在程序的“内部”组织系统,也用在“外部”组织系统-一种表现输出到其他程序的程序元素。
使用指示使得使用名称空间变得非常容易。
9.1 编译单元一个编译单元定义了一个源文件全部的结构。
一个编译单元由没有或多个后面跟着没有或多个名称空间成员声明的使用指示组成。
compilation-unit: using-directivesoptnamespace-member-declarationsopt一个C#程序包括一个或多个编译单元,每个都包含在分立的源文件中。
当C#程序被编译,所有的编译单元都一起处理。
这样,编译单元可以互相依靠,有可能出现循环的形式。
编译单元的使用指示影响那个编译单元的名称空间成员声明,但是不会对其他编译单元有影响。
一个程序的每个编译单元的名称空间成员声明把成员放到一个单独的声明域中,称为全局名称空间。
例如:File A.cs:class A {}File B.cs:class B {}两个编译单元合成一个单独的全局名称空间,在这种情况下声明了两个有完全名称的A和B。
因为两个编译单元指向同一个声明域,如果每个都包含一个有相同名称的成员的声明就会产生错误。
9.2 名称空间声明一个名称空间声明由关键词namespace,跟着一个名称空间名称和主体,最后有一个可选的分号组成。
namespace-declaration: namespace qualified-identifiernamespace-body ;optqualified-identifier: identifier qualified-identifier . identifiernamespace-body: { using-directivesoptnamespace-member-declarations}opt一个名称空间声明也许会在编译单元中作为最高级别的声明发生,或者在另一个名称空间声明中作为一个成员声明。
C#命名空间详解

System.Diagnostics 提供允许与系统进程、事件日志和性能计数器进行交互的类。此命名空间还提供可以调试应用程序和跟踪代码执行的类。
System.Drawing.Drawing2D 提供高级的二维和向量图形功能。此命名空间包括渐变笔、Matrix类(用于定义几何转换)和GraphicsPath类。
System.Drawing.Imaging 提供高级的GDI+图象处理功能
System.Drawing.Printing 提供与打印相关的服务。
建的,这些对象被配置为要求某些自定服务,如同步,事务,实时(JIT)激活、安全性。多个对象可以存留在以个上下文内。 System.Runtimg.Remoting.Lifetime
包含管理远程对象生存期的类。传统上,分布式垃圾回收功能使用引用计数和Ping来控制对象的生存期、这种机制在每一项服务只有较少的 客户端时可以正常工作,但是当每一项服务有几千个客户端时就不能正常工作了。远程处理生存期服务将每一项服务与一个租约关联,当租
System.Globalization 包含定义区域性相关信息的类,这些信息包括语言、国家/地区、正在使用的日历、日期的格式模式、货币、数字以及字符串的排序顺序。
System.IO 包含允许对数据流和文件进行同步和异步读写的类型。
System.IO.IsolatedStorage 包含允许船舰和使用独立存储区的类型。通过使用这些存储区,可以读写信任度较低的代码无法访问的数据,防止公开可保存在文件系统其
C++ using std namespace 详解

using namespace std是什么意思1)命名空间的意思!2)#include <iostream.h>等同于:#include <iostream>using namespace std;具体点:std::cout , std::endl; (在没有.h 或者using namespace std 情况下) cout , endl (在有.h 或者using namespace std)3)意思"使用std(标准)名字空间"的意思;假若你包含了标准库的头文件(如:cmath,cassert,vector等),而你又不想在使用std名字空间任何东西时加上"std::" 前缀,你就可以用using 关键字来向编译器说明你将要引用哪个名字空间下的东西. 一旦出现了"using namespace std;"这一句,那么在该行所在的作用域内有效,不过你还可以用"作用域分辩符'::'"来引用全局的函数或变量类型.4)使用名字空间。
使用名字空间是为了避免类名字的污染,这是因为你有可能会命名一些有相同类名但实际操作不太相同的类,如果放在一起,编译器就不知道到底该用谁,如果你把具有相同类名的类放在不同的名字空间里,调用时注明是哪个名字空间里的类,编译器就能清楚了。
详细内容建议看看《c++ primer》5)表示用的是标准名字空间std表示你所使用的一些函数,标准的对象(如cout)都是在名字空间std 下面的6)所谓的名字空间是标准c++中的一种机制,用来控制不同类库的冲突问题。
使用它可以在不同的空间内使用同名字的类或者函数!如下std::cout<<"hi"; //表示使用std名字空间中的cout而不是普通的cout;如果用using namespace std;就可以去掉“std::“而表示使用标准std空间中的函数(加上后缺省使用std空间中的)std当然不是随便的,它是标准的!当然你可以自己做,那个时候就是任意的了。
第3章 命名空间

XML
KMR
教程
3.1 命名空间
为保证命名空间标识符的唯一性,采用URI。因为URI是唯一的, 同时XML文档可用于Web。 URL(Uniform Resource Locator,统一资源定位符) HTML用,属于URI的一部分 URI (Uniform Resource Identifier,统一资源标识符) 可以是Email、主机域名、文件路径 URI对于定位Internet上的资源是更为通用的架构,更为注重资源 而不太注重位置。 URL应该说是目前常用的一种URI。 问题: 1.网址中含有XML标记禁用的字符,如网址中都有“/”
Hale Waihona Puke 默认命名空间是命名空间的特例,即不需要前置字符串
默认命名空间可以多次声明,但后面的声明会覆盖前面的 如果一个默认命名空间声明的URI为空值,则该元素就不在 任何命名空间中 注意:必须先声明默认命名空间,然后才能不使用显式前缀 应用到任何后面的元素。
XML
KMR
教程
3.2 默认命名空间
<?xml version="1.0" encoding="UTF-8"?> <items xmlns="3-2.dtd" xmlns:disc="3-3.dtd" > <item> <name> asp</name> <disc:price>12.3</disc:price> </item> </items>
XML
KMR
教程
3.2 定义命名空间
命名空间实例:学生信息XML、家长信息XML 补充例3-1.xml 补充例3-2.xml
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
独立团论坛:
教学内容:C语言,C++,C#,易语言,游戏辅助编程.
====================================================================== =======================================================
namespace 命名空间的作用:
前面我们学习了C++ 标准输入/输出流iostream 头文件里面的cout对象利用namespace 命名空间std 就可以不用每次在使用cout 和endl 前面加std::
那么namespace 命名空间的作用不仅仅是可以让cout 和endl 变得更简洁,
它真正的目地是为了避免和减少命名冲突,
当然我们写一个庞大的程序时候,难免会重名,特别是一个项目程序由多个人合作完成的情况下,
在C++还没诞生前,过去C语言中的解决方法是靠人为的注意,并且加长名字来避免程序中的各命名重名的问题,虽然这是解决命名重名问题的办法之一,
但这就无形中限制了程序员在写程序时,不能自由的命名自己使用的变量名或者函数名,所以显示了C语言的不足。
自从C++诞生后,可以通过命名空间解决这一问题,这就是C++引入命名空间这个概念的好处.
我来举个比较形象的例子:
有2个双胞胎兄弟,他们的小名:一个叫小李,一个叫小彬,爸爸给他们买了2本一样的数学书,为了区分这2本书,他们就要分别在自己的数学书上写上自己的名字,
这个比喻的道理就是告诉我们在调用cout对象时也要在前面写上所属的命名空间std::
虽然我们学会了在代码里加上using namespace std ,就使用cout对象时前面不需要加std:: 了,但是最好的方法就是不用using namespace std
而是用using std::cout ,这样可以避免命名重复的问题,
这是因为不同的名字在不同的命名空间内,将他们都释放出来时,如果不小心就会造成使用了不该使用的库中的同名函数或同名对象。