`
xiaodongdong
  • 浏览: 81271 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

关于namespace的几点见解

阅读更多

      很早之前就接触了namespace这样一个概念,当然也是有自己的几点理解的,最近在上C++的课,老师提到了这样一个概念,很多同学对这样一个东东不是很理解,我在这里谈谈自己的几点见解

      如同名字一样的意思,namespace:命名空间,之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了,为了解决这个问题,引入了名字空间这个概念,通过使用using namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的.这样一来就不会引起不必要的冲突了.

      对于懂JAVA的人而言,namespace这个东东就相当于JAVA里面的package,用来你在惟一标识你在package里面所建的类,在同一个package里面的类的名字是不能重复的,但在不同package里面是可以的,那么调用的时候只要通过对应的package就能把他们区分开来,就比如有两个寝室的人叫一样的名字,但寝室的编号不一样,我们就可以通过寝室号来区分他们,叫人的时候加上寝室号就不会叫错人.

       而对于C#里面也同样有namespace这要一个概念;它和C++一样。

       至于它的作用呢前面也提到了,如果一个项目多个人开发,那么就有可能开发人员之间所写的类的名字重复;有了namespace和package这样一东东;就不会有问题啦;这也只是个人的一点见解,还望指教

分享到:
评论
3 楼 piao_bo_yi 2010-11-30  
这个概念还是很有意思的,并不只是区分同名的物体这么简单。c++的namespace是逻辑的概念,意味着它并不依赖于物理存储,所以利用它,可以扩展已有类库的行为。c++中在模板、STL中利用namespace的扩展性,为自己的类型提供特殊的算法。
而java中的package是物理概念,跟硬盘的文件存储相对应,不具有扩展性。
2 楼 xiaodongdong 2010-09-19  
zx339 写道
"为了解决这个问题,引入了名字空间这个概念,通过使用using namespace xxx;"

补充。 还可以使用namespace::XXX

如std::string, 就不用using namespace std;

java中也可以: java.lang.String XXX

PS:C++版块都很冷清了,不要再把这些基本概念搬上来了。只有理不理解入门C++书上的话,不存在见解。

1 楼 zx339 2010-09-19  
"为了解决这个问题,引入了名字空间这个概念,通过使用using namespace xxx;"

补充。 还可以使用namespace::XXX

如std::string, 就不用using namespace std;

java中也可以: java.lang.String XXX

PS:C++版块都很冷清了,不要再把这些基本概念搬上来了。只有理不理解入门C++书上的话,不存在见解。

相关推荐

    namespace介绍

    ### Namespace概念与应用 #### 一、Namespace简介 在C++中,`namespace`是一个非常重要的概念,用于解决标识符的命名冲突问题。随着软件规模的不断扩大和代码库的复杂化,不同模块之间可能会出现相同的标识符(如...

    struts2_namespace代码

    在`Struts2_0200_Namespace`这个压缩包中,我们可以看到关于Struts2 Namespace使用的实例代码。通常,这些代码可能包括以下几个方面: 1. **Action配置**:在struts.xml或类似的配置文件中,Action元素会包含一个...

    c++课件 namespace

    文档`doc07`可能包含了更多关于`namespace`的实际应用示例和最佳实践,比如如何避免命名冲突,以及如何有效地组织和导入代码库中的`namespace`。 总之,掌握`namespace`的使用是C++编程中的关键技能之一,它能帮助...

    C++-命名空间namespace

    ### C++命名空间(namespace)详解 #### 命名空间概览 在C++编程语言中,`namespace`(命名空间)是一个关键的概念,用于管理标识符的作用域,避免命名冲突,尤其是在大型项目和库使用场景下。命名空间提供了一种...

    QT_namespace_UI的理解

    QT中的namespace机制是C++编程语言的一个特性,用于组织代码,避免命名冲突。在QT库中,`namespace`被广泛使用,尤其是`QT_NAMESPACE`和`Ui`这两个关键的命名空间。 `QT_NAMESPACE`通常被定义为`Qt`,这是QT库的...

    C++ namespace 使用方法

    在C++编程语言中,命名空间(namespace)是一种组织代码的方式,它可以帮助避免名字冲突问题。当多个程序或库在同一个程序中使用相似的变量名或函数名时,命名空间可以将这些元素分隔开,使得相同的名字在不同的命名...

    namespace,c++名称空间

    在C++编程语言中,`namespace` 是一个重要的组织代码的工具,它允许程序员在一个命名空间内定义标识符(如变量、函数、类等),而不会与其他命名空间内的相同标识符冲突。`namespace` 提供了一种避免全局作用域污染...

    C++中的名空间(namespace)探讨

    在C++编程语言中,名空间(namespace)是一种重要的特性,其主要目的是解决标识符(如类、对象、函数等)的命名冲突问题。当多个库或模块使用相同的标识符时,名空间允许程序员在不引起冲突的情况下复用这些名称。...

    前端开源库-solid-namespace

    "Solid-namespace"是一个专为前端项目设计的开源库,它专注于实体命名空间,尤其在处理RDF(Resource Description Framework)数据时显得尤为重要。 RDF是一种用于描述网络资源的标准模型,它使用URI(Uniform ...

    NSExtAddDelFld-MS Namespace Shell Extension范例

    【NSExtAddDelFld-MS Namespace Shell Extension范例】是一个示例项目,旨在展示如何使用Microsoft的Namespace Shell Extension技术创建虚拟目录和子目录,并且包括了添加和删除这些虚拟目录或文件的功能。Namespace...

    namespace接口和实现分离最佳实战

    总结来说,本实战指南主要涵盖了以下几点: 1. 命名空间的概念及其在QT中的应用,用于解决命名冲突问题。 2. 接口与实现分离的设计原则,提高了代码的可维护性和可扩展性。 3. 如何在QT中创建和使用命名空间来实现...

    Qt命名空间 Qt namespace

    关于压缩包中的`QtNamespaceDemo`文件,这可能是一个包含使用Qt命名空间示例的项目。在这个示例中,开发者可能会展示如何引入Qt命名空间,创建和使用Qt类,以及如何处理命名空间冲突等问题。通过分析和运行这个示例...

    Test_NameSpace

    在“定义契约命名空间”中,我们需要了解以下关键点: 1. **服务契约(Service Contract)**: 它是通过使用`[ServiceContract]`特性标记的接口,定义了服务提供者和消费者之间的交互方式。服务契约中的每个方法都...

    命名空间的使用,以及为何不用using namespace std,内含可运行代码

    本例主要解释了为什么不用using namespace std;,因为如果这么使用了,在其它地方如果用到了标准库中的标识符(那么多标识符,不能保证都记住),就会报错,如果程序工程很复杂,可能会查找冲突很麻烦,因此在实际...

    VC++标准库函数sing namespace std

    在C++编程语言中,`using namespace std` 是一个非常常用的指令,特别是在Visual C++ (VC++)环境中。这个指令允许程序员在代码中直接使用标准库(Standard Template Library, STL)中的函数、对象和类型,而无需每次...

    CSS_namespace_thrift接口文档

    压缩包内的“CSS_namespace_thrift接口文档2.txt”可能包含了关于如何定义和使用这些命名空间的详细说明,包括如何处理跨服务通信时的命名冲突,以及如何为不同的CSS服务定义独特的命名空间。可能还涵盖了如何在实际...

    android namespace 、样式、主题 (二)

    在Android开发中,Namespace、样式(Style)和主题(Theme)是构建用户界面的重要组成部分,它们为应用提供了统一的外观和感觉。这篇博客将深入探讨这些概念,以便开发者更好地理解和运用。 首先,让我们来理解...

    Namespace extensions - the undocumented Windows Shell(13KB)

    实现Namespace Extensions的过程大致分为以下几个步骤: 1. **注册组件**:首先,你需要在注册表中注册你的Namespace Extension,声明它的CLSID(Component Object Model Class ID)和类工厂,以便Windows能够找到...

    c++中有关命名空间(namespace)的一些介绍

    在C++编程语言中,命名空间(namespace)是一种组织代码的重要机制,它的主要目的是解决标识符的命名冲突问题。在大型项目或者多个库之间,不同的开发者可能会使用相同的名字来定义变量、函数或类,这就会导致编译...

    Namespace 命名空间

    命名空间(Namespace)在计算机编程,尤其是面向对象编程语言中,是一种重要的组织代码的方式,它主要用于避免命名冲突和提供代码的模块化。在.NET Framework、Java、C#等语言中,命名空间扮演着核心角色。 在.NET...

Global site tag (gtag.js) - Google Analytics