浏览 3238 次
锁定老帖子 主题:关于namespace的几点见解
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-18
最后修改:2010-09-18
很早之前就接触了namespace这样一个概念,当然也是有自己的几点理解的,最近在上C++的课,老师提到了这样一个概念,很多同学对这样一个东东不是很理解,我在这里谈谈自己的几点见解 如同名字一样的意思,namespace:命名空间,之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了,为了解决这个问题,引入了名字空间这个概念,通过使用using namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的.这样一来就不会引起不必要的冲突了. 对于懂JAVA的人而言,namespace这个东东就相当于JAVA里面的package,用来你在惟一标识你在package里面所建的类,在同一个package里面的类的名字是不能重复的,但在不同package里面是可以的,那么调用的时候只要通过对应的package就能把他们区分开来,就比如有两个寝室的人叫一样的名字,但寝室的编号不一样,我们就可以通过寝室号来区分他们,叫人的时候加上寝室号就不会叫错人. 而对于C#里面也同样有namespace这要一个概念;它和C++一样。 至于它的作用呢前面也提到了,如果一个项目多个人开发,那么就有可能开发人员之间所写的类的名字重复;有了namespace和package这样一东东;就不会有问题啦;这也只是个人的一点见解,还望指教 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-09-19
"为了解决这个问题,引入了名字空间这个概念,通过使用using namespace xxx;"
补充。 还可以使用namespace::XXX 如std::string, 就不用using namespace std; java中也可以: java.lang.String XXX PS:C++版块都很冷清了,不要再把这些基本概念搬上来了。只有理不理解入门C++书上的话,不存在见解。 |
|
返回顶楼 | |
发表时间:2010-09-19
zx339 写道 "为了解决这个问题,引入了名字空间这个概念,通过使用using namespace xxx;"
补充。 还可以使用namespace::XXX 如std::string, 就不用using namespace std; java中也可以: java.lang.String XXX PS:C++版块都很冷清了,不要再把这些基本概念搬上来了。只有理不理解入门C++书上的话,不存在见解。 |
|
返回顶楼 | |
发表时间:2010-11-30
最后修改:2010-11-30
这个概念还是很有意思的,并不只是区分同名的物体这么简单。c++的namespace是逻辑的概念,意味着它并不依赖于物理存储,所以利用它,可以扩展已有类库的行为。c++中在模板、STL中利用namespace的扩展性,为自己的类型提供特殊的算法。
而java中的package是物理概念,跟硬盘的文件存储相对应,不具有扩展性。 |
|
返回顶楼 | |