`
xiaodongdong
  • 浏览: 80488 次
  • 性别: 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++书上的话,不存在见解。

相关推荐

Global site tag (gtag.js) - Google Analytics