您的位置:首页 > 编程语言 > C语言/C++

C++命名空间剖析

2014-04-16 15:29 183 查看
小伙伴们为何一直不能理解那一行神奇的using namspace std;最直接的原因就在于它的名字命名空间,好了,进入正题:

千万不要被这个名字迷惑,所谓命名空间不是真有这么一个神奇的“空间“,这是个抽象的慨念;C++没有任何名为std的任何文档。下面说明命名空间是何方妖孽!

摘自<yvals.h>,不要深究这是干嘛的头文件,“……”为省略部分

------------------------------------------------------------------

1 /* yvals.h values header for Microsoft C/C++ */

2 ……

3 ……

4 /*NAMESPACE */

5 #if defined(__cplusplus)

6 #define _STD_BEGIN namespacestd {

7 #define _STD_END }

8 #define _STD ::std::

9 ……

10 ……

-------------------------------------------------------------------

第6,7行namespace std{#define _STD_END},namespace后面紧跟的std就是命名空间的名字。这时你就会想那如果不要std,随便起个名字又如何?这就对了!比如“小沈阳”是C++的创始人,为了纪念这样的牛人干脆咱们不要std,就用namespace xiaoshenyang{……},这样的话每次我们的程序开头就不是”using namespace
std;”而是“using namespace xiaoshenyang;“了,看到这儿你是否已经大彻大悟

紧接着,上面的_STD_END就是属于”std”这个明明空间了,而你所用的什么“cin”,“cout“啦,都是类似_STD_END那样定义的,为什么只用一个名字“std”呢?当然是为了统一管理啦,这个”std”就是所谓的“空间”,切记啊,它不是人类世界那样理解的实体空间哦!

这里重点帮助大家理解命名空间的含义,关于命名空间的其他功能,参见C++ Primer Plus(第六版)324页,以及C++ Primer(第五版)74页,我是小菜,不敢对两本神书妄加评论,但个人强烈推荐两本书一起看,体会两位大师不同的风格。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: