小众知识

首页 > 正文

请各位高手解答到底什么是名字空间?C++我快要学完了,现在我还不了解那是个什么东东!

如题,谢谢  

 hujun614 发表于:2003-07-10 08:41:47
得分:20 

很多C++的标准对象都封装在一些名字空间中,你要引用的话可以 namespacename::object来引用,也可以先申明引用 namespace, 语句是 using namespace namespacename,以后就可以直接用你的object了。
以下是引用内容:"C++里引入namespace的目的就是为了避免污染全局名字空间,简单地说,就是为了避免和减少命名冲突。一旦一个程序写大了,就很难避免重名,特别是多人合作的情况下。过去C中的解决方法只有靠人为的注意,并且加长名字,以避免重名。这样做会使得一些名字看上去没有意义或者难以理解,而程序员在写程序的时候,也受这个问题的限制,不能自由地命名自己使用的变量或者函数。而有了namespace就不存在这些问题了,这就是C++引入namespace这个概念所带来的便利。" 

 wlfjck 发表于:2003-07-10 08:52:04
得分:20 

很久以前C语言中,所有的名字都是处于全局的或是局部的,大家都可以用。这样的话,就产生了一个问题,如果很多人进行开发,肯定有人会起相同的函数名,或变量名,或者两个不同的库里面有相同的函数名,这样的话,就会引起混乱,不是连接不上,就是造成程序死掉。
C++就采用名字空间的办法,解决了这个问题,通过不同的名字空间,我们可以起相同的函数名和变量名,这样不会引起冲突。

但是,名字空间也有一些问题存在,如果两个名字空间都有相同的函数名,而且我们通过using namespace x, using namesapce y将这两个名字空间都爆漏的话,同样会引起冲突的。 

 elvahuang 发表于:2003-07-10 09:46:05
得分:5 

为什么语言要提供namespace?
为了就是解决名字冲突的问题 因为名字在全局中只能用一次 

 elvahuang 发表于:2003-07-10 09:46:41
得分:0 

上面的两个高手已经说的很好的了 

 slimak 发表于:2003-07-10 11:33:01
得分:5 

namespace是提供给编译器看的,告诉编译器如何/定位寻找函数,变量,类...
主要目的是为了解决名称污染的问题. 

上一篇:大家推荐一本好的数据结构与算法的书(c++描述)
下一篇:我对C/C++不熟悉,在网上看到一个消息,想请问大家。权当散分!

分享到: