【c++初阶】命名空间的定义

文章介绍了C++中命名空间的概念,用来解决变量名冲突的问题。namespace关键字用于定义命名空间,::操作符用于访问特定作用域的变量。访问命名空间有两种方式:展开和指定访问。在实际工程中,为了避免与标准库函数重名,通常只展开需要的部分。此外,命名空间可以嵌套,并且同一工程中可以有同名命名空间。
摘要由CSDN通过智能技术生成

一.缺陷

在c语言中,如果我们同时定义一个全局变量和一个局部变量并且使用同一个名称的话,是可以编过的(因为全局和局部是属于两个不同作用域)。但会优先使用局部变量,这样的话在c语言中我们是无法直接访问全局变量a的。

在这里插入图片描述

在c++里自然也会有这种冲突,为了解决这个缺陷,c++定义了关键字namespace和操作符::来解决这个问题。

二.namespace和::

首先介绍一下::的使用。::是一个双目操作符,前面代表要访问的域,后面是要访问的变量。(因为全局的域就是空白,所以::前面是空白)

在这里插入图片描述

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。

在这里插入图片描述

那么在定义了一个自定义域后它计算机的访问方式是怎么样的呢?

实际上它的访问方式是局部域->全局域->自定义命名空间。但需要注意的是如果不访问命名空间,那么命名空间里的定义是不会被访问的。

在这里插入图片描述

三.访问namespace

访问namesp有以下两种方式:

1.展开命名空间

在这里插入图片描述

2.指定访问命名空间域

在这里插入图片描述

四.一些注意

1.工程里标准库的展开

我们经常会在一些较小的程序里写以下代码。

在这里插入图片描述

这是因为c++里的标准库(包括STL)都是用一个命名域所包含的,为了使用库函数,我们得首先展开命名域。std就是标准库库函数的命名域,当然我们也可以如下写:(使用域限制符号)

在这里插入图片描述

这样写毫无疑问要复杂许多,所以 一般不用这种写法。

上面直接展开所以标准库函数实际上是有隐患的,特别是在写的工程很大时,我们会很容易与库函数造成重命名的错误,为了解决这个问题,在工程中常常如下写:

在这里插入图片描述

我们只展开常用的部分,这样就可以避免重命名。

2.命名域的小技巧

1.命名域可以进行嵌套

在这里插入图片描述

2.同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸蛋挞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值