当前位置:  开发笔记 > 编程语言 > 正文

命名空间和C++

如何解决《命名空间和C++》经验,为你挑选了2个好方法。

我观察到,在C++中,很少使用命名空间,而在.Net中它很常见.这有什么特别的原因吗?

另外我想知道其他人是否看到过在C++中常用的命名空间.

编辑:其实我指的是自定义应用程序而不是标准库,如STL或任何其他东西.



1> James Curran..:

在C++中,名称空间在初始实现后的某个时间被添加到语言中,因此有许多应用程序代码没有使用它们.因此,由于它们的后期添加,所有标准库都被放入一个命名空间中.因此,using namespace std; 如果您愿意,只需简单地忽略命名空间即可.

另一方面,在C#中,名称空间从一开始就涉及到,并且库被大量分配.此外,每个人都使用它来创建初始代码,默认情况下将类放入命名空间.这迫使人们更加了解命名空间.



2> Klaim..:

C++中的命名空间完全不同于.Net,ActionScript和Java(它们具有相同的概念).它们根本不是同一个概念.

在C++中,命名空间主要用于允许在命名上下文(命名空间)中封装几种类型和函数.它只涉及命名和访问名称.

在.Net,ActionScript和Java中,名称空间更多地是关于模块而不是名称.它们强制开发人员将他的代码组织在不同的命名空间中,每个命名空间都有一个目的,即上下文.由于这些语言是动态的(而不是像C++那样的静态),名称空间允许将类型后期绑定到代码,因此您只需要在文件中使用要使用的类型的规范名称(名称空间+名称),从而快速编译.

在C++中,没有模块comcept,只有完全不了解彼此的编译单元.

现在关于它们的使用,通常很好的做法是在C++中使用命名空间来封装模块(可执行文件或dll/so),一些实现代码或任何有用的代码子部分.这说大多数时候最好没有太深的命名空间层次结构.由于历史原因,很多C++开发人员在很长一段时间内都不知道C++有一个名为namespace的功能.现在我们所谓的"现代C++"表明你已经了解它,但是今天仍然使用了许多旧的C++代码,也许这就是你在谈论命名空间时所看到的.

C++中的命名空间是一个与其他语言不同的特性,这也使得它在代码中的写作方式或多或少.事实上,它是如此不同,你根本不会以同样的方式管理它,当你来自.Net时,代码真的很难理解.因此,您不应该在语言之间以相同的方式使用名称空间,它们实际上是不同的概念.


"在.Net,ActionScript和Java中,名称空间更多地是关于模块而不是名称." 这对于.net来说肯定是不准确的.可以在多个程序集中定义名称空间的成员,并且程序集可以包含多个名称空间中的定义.事实上,这与命名空间在C++中的工作方式非常相似.Java略有不同,因为命名空间默认通知.class文件的文件系统位置(暂时忽略jar)但是即使这样,模块单元是.class,而不是命名空间,不同的"供应商"可以提供相同的类命名空间.
推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有