小议命名空间namespace

昨天敲代码遇到一例子,3.13再论命名空间,后来问芋头关于命名空间的理解,结果悲剧的更迷糊了!

书中简述:“文件开头并非总是放置using namespace std;这一行代码的最佳位置,我们最终要使用更多的命名空间,而非仅仅是std 。事实上,我们甚至要在不同的函数定义中使用不同的命名空间。”

“就3.13这个例子而言,相对于将using namespace std;放置在开头,区别仅仅在于编程风格。但随着你开始使用更多的命名空间,就会发现它最终将影响程序的运行。”

后来返回前面基础再看了一次,感觉还是不太明白,于是乎上MSDN找了下关于对namespace的解释:


Jimt200010

 

 

c++中,namespace 只是用来方便区分不同的代码段而已,没什么实际的效果。到了.net中,namespace被强化,成为所有模块甚至全局的命名符号。 

就c++而言,小型项目中很少有用namespace的,理由是不需要用。在大型项目中,就有必要用一下了。 

namespace主要功能是区分不同代码,以免混淆或者冲突。大项目中,对函数和类等命名的时候难免有冲突,比如cutstr、findxxx等基础函数,都是全局函数,放到一起编译的时候肯定会出错,这里就要用namespace了。 

比如有两个namespace :name1 和 name2 ,name1里定义了cutstr,name2里也定义了cutstr,这样就没有问题了,在name1范围内(用 using name1来指定,或者包含在name1范围内)的cutstr就是name1里定义的cutstr,name2里的就是用name2里定义的cutstr。如果要指明用哪个,可以用 name1::cutstr 的方式来指定具体的某一个。 

这样的话,每个独立的项目模块都放到一个namespace中,就不会跟其他模块产生任何冲突了;最后只要实现定义好的接口就行了。

 

比如:


 

看了这例子才弄清楚关于namespace的简单理解,再看看昨晚芋头给我的解释觉得差不多就这个意思:

 

忽忽,继续看书!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值