c++中的 namespace

大家好,这是我第一次写的博客,不好的地方,请大家多多包涵并指出问题让我们共同进步。

cec8cec1dbce433bbf345ac3cd86dba0.gif


 首先呢,对大家来说刚刚学习C++的话,看别人的代码开头处绝大多数都会看到这样的东西

8077ada3026b470183cb51e1f4a510c8.jpg

 有语言基础的应该都知道,第一个是包含头文件第三个是主函数,但是第二个东东是啥呢?

等我慢慢来给你们说道说道。

正所谓C加加是在C的基础上更上一层的一种语言,可以理解为是把C的某些弊端给优化。大家试想一下,在C语言中,变量名不能为关键字,这个大家应该都清楚,但是有些人就想着:哎,我就要用。于是吧,C加加相比于C的第一个优点就出现了:

namespace是C加加的一个关键字,后面接着的是命名空间的名字。忘了和你们说了,编译器的查找规则是先局部在整体,但是这个namespace后面的空间(也称空间域)权力更大,可以让编译器先从这里面去寻找。举个例子:

d030dffcfb3d4089b33bb3044cc10524.png

 这是c写的代码,可以明显看的到,不能用库函数为自变量。现在反转来了

22134e941fde48debe58893da4ee0de6.png

 我们给了一个空间域s,把rand放了进去,然后由于编译器规则,直接去namespace里面找,找到了就不会再去把头文件展开找了就不会和库函数起冲突。

这个懂了,可能小伙伴们看到了输出时候用了s::就会

1e172104af194138848f3c0afca7144f.gif

 其实::这个是一个域作用的限定符

 

域作用限定符就是区分全局变量和局部变量,

006d98af190a41e5b4321896fb5ca62c.png

 看第一个a没加::按照编译器规则就是先局部,在全局。第二个加了::但是::前面是空的就是先从全局开始。s::的话::前面是s这个空间域,所以就会从s空间里面找,找不到就会直接报错。

在::前面加上你命名的空间域的名字,就可以直接让编译器最开始就访问你那个空间域里面的元素,如果不加的话就不会进入自己定义的空间域。

这就是namespace的用法了,总的来说就是,防止变量名和已有的函数名冲突,而发明出来的解决方法。

感谢大家的阅读。

bd47bb57d8714b5f90527b37817348e6.gif

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值