C++中名称空间与 using的作用

名称空间是什么

为了让编写大程序以及多个厂商现有代码组合起来更方便,比如有

  1. A厂写的代码里面包含了一个函数wanda()
  2. B厂写的代码里面也包含了一个函数wanda()

此时如果你想把A B两个厂商的代码组合起来,就有可能会发生函数名字冲突这样的事情。

而名称空间能让厂商把其产品封装在一个叫做名称空间的单元中,这样就可以使用名称空间来指出想用哪个厂商的产品。

比如使用A公司的wanda()函数可以这样写

A:wanda();

使用B公司的wanda()函数可以这样写

B::wanda();

using的使用

看到上面可能就会有同学问,每一次都在前面加一个名称空间,那不是很繁琐嘛,所以为了解决这一问题,就诞生了using这一关键字。

比如你使用

using namesapce A;
wanda(); 

表达的意思就和

A::wanda();

是一样的,就是你使用了using namesapce A这一语句以后,你以后使用的函数都默认是A公司的函数。

using namesapce std;的解释

我们在开始学习C++的时候都会遇到一个问题,这一句using namespace std;到底是干什么用的,有了上面的知识以后我们知道,他的意思就是后面用的函数都是std这个名称空间(公司) 的函数,那么std又是什么呢?
C++的标准组件,都被放在了std这一命名空间里面了,所以如果你想使用C++的标准组件你就需要从这个命名空间中调用函数。

但是该方法也有缺陷,比如下面的代码

/*A空间包含的两个函数test1() test2()*/
test1();
test2();
/*B空间包含的两个函数test1() test2()*/
test1();
test2();

如果我们想调用A空间的中test1()和B空间中的test2()那么我如果使用上面的方法来写代码的话会是下面这样

using namespace A;
test1();
using namespace B;
test2();

这会很不方便,特别是当命名空间很多的时候,而且特别容易出错,因为你没办法在开头的时候就写好,要使用哪一些命名空间,因为每个命名空间空间都有作用域的,使用using namespace x;后,后面的函数都会默认从x里面出来,这就需要我们一边写代码还要一边写using namespace x;很容易出错。所以我们很多时候会用下面这样的方式来写

using A::test1();
using B::test2();
test1();//默认使用的是A中的test1
test2();//默认使用的是B中的test2
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值