现在的位置: 首页 > 综合 > 正文

C++命名空间剖析

2018年05月19日 ⁄ 综合 ⁄ 共 1000字 ⁄ 字号 评论关闭

    小伙伴们为何一直不能理解那一行神奇的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页,我是小菜,不敢对两本神书妄加评论,但个人强烈推荐两本书一起看,体会两位大师不同的风格。

抱歉!评论已关闭.