命名空间,也叫namespace,相信用c++的人一定非常熟悉,但你真的了解它吗?它存在的意义究竟时什么,关键时候又可以起到什么作用呢?接下来我们带着疑问,一起来深入了解以下它存在的前因后果。
诞生的原因 :
相信学c++的应该基本都学过c语言,因为不了解c语言,你很难把c++学好,毕竟c++就是从c语言身上衍生出来的。但是在c语言中是没有命名空间这个概念的,这也就导致在很早的时候,c语言的程序员在工作中出现了很多问题。
在学习一门语言的最开始,我们一定会了解以下语言本身自带的关键字,老师也一定会告诉我们在我们给变量,函数命名时,一定不能与这些库中的关键字重复,否则就会报错。但是我们很难把所有库中的关键字全部记住,那么当我们在引用一个新的头文件的时候很有可能发现之前的命名与库里的重复了,而哪怕你能记住库中所有的关键字,但是你也很难预防与别人的命名重复,那么当两个文件链接在一起的时候,也会出错,所以让那时候的程序员就非常的头疼。于是在这种情况下,我们的命名空间就应运而生了。
作用:
命名空间的作用就是建立一块域,在这块域中来定义一些变量,函数,类的名字,当我们需要用的时候,只需要去引用它即可。下面我们来看代码:
这里我们没有去调用它,所以打印的就是main函数里的a,下面我们看如果调用它的结果是什么:
从这我们可以看出只有调用它的时候,它才会起到效果。
而对于命名空间还有一句代码相信大家非常熟悉,就是:
而这句话的意思就是展开命名空间,光这样说大家可能没有什么概念,下面我们用代码说明
当我把这句代码屏蔽时,可以发现程序是编译不过的,现在我们把注释取消掉再看看
取消之后我们发现他就可以通过了,这样我们就可以理解,这句using namespace ... 就相当于把我们命名空间的域界给打开了,让它变成了类似全局变量一样。所以对于using namespace std这句话我们要谨慎使用,它相当于打开了库函数域界。
现实价值 :
当有了这个命名空间后,我们就可以在命名空间中设置变量,函数等的名字,并单独去引用它,这样就有效防止了和库函数或其他人的命名冲突。