大家好,这是我第一次写的博客,不好的地方,请大家多多包涵并指出问题让我们共同进步。
首先呢,对大家来说刚刚学习C++的话,看别人的代码开头处绝大多数都会看到这样的东西
有语言基础的应该都知道,第一个是包含头文件第三个是主函数,但是第二个东东是啥呢?
等我慢慢来给你们说道说道。
正所谓C加加是在C的基础上更上一层的一种语言,可以理解为是把C的某些弊端给优化。大家试想一下,在C语言中,变量名不能为关键字,这个大家应该都清楚,但是有些人就想着:哎,我就要用。于是吧,C加加相比于C的第一个优点就出现了:
namespace是C加加的一个关键字,后面接着的是命名空间的名字。忘了和你们说了,编译器的查找规则是先局部在整体,但是这个namespace后面的空间(也称空间域)权力更大,可以让编译器先从这里面去寻找。举个例子:
这是c写的代码,可以明显看的到,不能用库函数为自变量。现在反转来了
我们给了一个空间域s,把rand放了进去,然后由于编译器规则,直接去namespace里面找,找到了就不会再去把头文件展开找了就不会和库函数起冲突。
这个懂了,可能小伙伴们看到了输出时候用了s::就会
其实::这个是一个域作用的限定符
域作用限定符就是区分全局变量和局部变量,
看第一个a没加::按照编译器规则就是先局部,在全局。第二个加了::但是::前面是空的就是先从全局开始。s::的话::前面是s这个空间域,所以就会从s空间里面找,找不到就会直接报错。
在::前面加上你命名的空间域的名字,就可以直接让编译器最开始就访问你那个空间域里面的元素,如果不加的话就不会进入自己定义的空间域。
这就是namespace的用法了,总的来说就是,防止变量名和已有的函数名冲突,而发明出来的解决方法。
感谢大家的阅读。