对于C语言中我们有时候很难将标准库中的关键字当作变量的名称,这就是C语言中会存在的命名冲突的问题。
但是在c++中我们可以自行开辟一块命名空间出来,我们可以将我们所需要的变量的名称放在一块区域中,当我们需要使用的时候我们就通过那块命名空间的名称去调用这个变量。
注意c语言的库中本身就有rand这个关键字,但是当我们将它放在我们开辟的名为bit的命名空间时,我们使用域作用限定符去访问就可以直接调用。
同理,我们不仅可以在命名空间中定义变量,我们还可以在其中定义函数和结构体(这里作为初学者我们并未接触c++中的类)
我们调用这个函数时也需要加上域作用限定符
其中我们要注意对于结构体成员的访问要放在struct的后面
通过以上的讲解,我们对于命名空间有了大致的了解,那么我们除了使用访问限定符,还有调用命名空间中成员的方式吗??
第二种方式:
展开命名空间。
这行代码就是将我们定义的bit命名空间展开,但是我们展开命名空间可能会遇到麻烦,相当于这个空间种的变量外界可以随意访问,具有一定的风险性,所以一般情况下我们不会这么做。
第三种调用命名空间成员的方式:
部分展开。
同时,我们要注意命名空间是可以嵌套的。
往后走,我们了解到c++中有流提取和流插入函数cout和cin,这两个函数都是在c++标准库中的,尽管我们包含了头文件#include<stdio.h>,但是我们不可以直接使用这两个函数,因为头文件中有一块属于它们的命名空间,我们只有通过以上的三种调用方式才可以使用它们。
思考,如果一个项目下出现了同一个名称的命名空间会如何???
答案是,这几个相同名称的命名空间会自动合并,其中一样的变量就会自动合并