std空间和全局命名空间

简介: 目录目录命名空间C中的命名空间参考资料 注意不要盲目相信以下内容! 不要盲目相信以下内容! 不要盲目相信以下内容! (重要的事情说三遍),虽然以下内容也经过了我的验证,但是我的验证可能有错误的地方,欢迎大家留言告知。

目录



注意不要盲目相信以下内容! 不要盲目相信以下内容! 不要盲目相信以下内容! (重要的事情说三遍),虽然以下内容也经过了我的验证,但是我的验证可能有错误的地方,欢迎大家留言告知。希望这篇文章成为你深入探索相关领域的引子启发,而不是标准答案


在C++中,我们常用的头文件为不带“.h”后缀的头文件,而这些头文件里所包含和定义的标识符在std空间中,所以我们使用C++时经常需要加上

using namespace std

而原C语言的头文件为带“.h”后缀的头文件,这些头文件里所包含和定义的标识符在全局命名空间中,不需要声明使用std空间。

命名空间

命名空间是一种特殊的作用域,它包含了处于该作用域中的所有标示符,而且其本身也是由标示符表示的。

拿一个简单的例子来类比,当我们在C++中声明了一个类A之后,我们在类外定义类A的成员函数,这时我们需要在返回值后函数名之前加上

A::

来说明该函数为类A的成员函数。

命名空间也一样是用来说明标识符的所属范围,命名空间的使用目的是为了将逻辑相关的标示符限定在一起,组成相应的命名空间,可使整个系统更加模块化,最重要的是它可以防止命名冲突。

就好比在两个函数或类中定义相同名字的对象一样,利用作用域标示符限定该对象是哪个类里定义的。

C++中的命名空间

C++语言是从C语言发展起来的,因此有很多借鉴的地方。当C++语言推出但尚未标准化以前(98年才标准化),市场上已经有了很多版本的程序库了,各库林立,导致互相应用时出现了一个很难调和的难题,那就是命名冲突,又称名空间泛滥。

比如某个库写了个函数line(int x,int y);不巧另外一个库又写了个类class line;这下编译器该匹配哪个呢?只好取决于哪个库文件先被引用到文件中,并且把另外一个完全屏蔽掉。这显然不是一个好的方法。

在标准库的产生过程中,这个问题被提了出来。为此,标准库组织决定在标准库中引入名空间的概念,所有标准库的组件都在名空间std中定义,由用户手动引入到程序中,这样就让编译器知道,当遇到一个可能冲突的名称时,以标准库中定义的名称为主,如果想用标准库外定义的名称,那程序员需要自己注明另外的名空间,从而达到消除名空间泛滥的目的。

using namespace std

的写法引入了名空间的所有内容,这是一种简单但不保险的做法,是标准库组织不推荐这么做的。因为这样引入了所有的组件函数名,相当于重新引发了名字空间泛滥的问题。为此,好的做法应该是第二种分别引入。


参考资料


C++std命名空间详解
c++标准库 及 命名空间std

目录
相关文章
分布式事务Seata【四】事务补偿(TCC)
常见的分布式事务解决方案有 TCC、全局消息、基于可靠消息服务的分布式事务、最大努力通知等
1339 1
分布式事务Seata【四】事务补偿(TCC)
|
存储 运维 安全
基于 Serverless 架构的 CI/CD 框架:Serverless-cd
近日,Serverless 开发者平台 Serverless Devs 重磅发布基于 Serverless 架构的轻量级 CI/CD 框架——**Serverless-cd**。Serverless-cd 是一款运行在 Serverless 架构上的功能强大而灵活,安全,低成本的CI/CD开源框架。该框架基于 Serverless Devs 开发者工具打造,通过 Serverless-cd开发者可
795 0
基于 Serverless 架构的 CI/CD 框架:Serverless-cd
|
数据可视化 图形学
R可视乎|圆环图
对于饼图,上一次学习《R语言数据可视化之美》的时候主要利用graphics包和ggplot包(可见R可视乎|饼图)。这几天的学习中发现还有一个更加简便的方法——ggpie包。接下来做简单描述,然后进入圆环图的学习。
721 0
R可视乎|圆环图
|
自然语言处理 JavaScript 前端开发
从零打造一款轻量且天然支持SSR的CMS系统——simpleCMS
2年前笔者开发了一款基于 nodejs 的全栈开源 cms 系统 XPCMS, 主要是为了解决技术开发者搭建自身内容平台的局限以及降低使用成本, 虽然1.0版本已经完成, 但是从整体部署和二次开发的便捷度上还是存在很多缺点, 更加适合有一定技术能力的开发者来使用. 为了解决 XPCMS 的不足, 去年笔者和朋友特地开发了一款轻量便捷的内容管理系统——simpleCMS, 目前已在 github 上开源, 且能同时适配PC端和移动端.
588 0
es数据导出csv文件
es数据导出csv文件
|
弹性计算 JSON 运维
阿里云田涛涛:高效智能的云,CloudOps让运维更简单
CloudOps:以应用为中心的自动化运维新趋势
阿里云田涛涛:高效智能的云,CloudOps让运维更简单
|
JSON 数据格式
EasyUI–下拉框combobox
首先声明,所谓的数据控件这一个概念,EasyUI官方应该也没这个说法。猫哥是感觉网页上经常使用的、经常需要从后台获取数据后显示到控件内部的,有这么四个:下拉框、下拉列表、树、表格。
335 0
EasyUI–下拉框combobox
|
前端开发 数据可视化 数据管理
零起点入门系列教程⑤:用宜搭简单布局一个首页
【零起点入门系列教程】将会带给大家从业务视角出发由浅入深地学习用宜搭实现应用搭建。即便是没有任何代码基础的新手只要跟着系列课程,从0开始慢慢修炼,也能找到成功搭建应用的乐趣。今天第五讲,如何用宜搭简单布局一个首页。
3620 0
零起点入门系列教程⑤:用宜搭简单布局一个首页
|
新零售 供应链 监控
蒙牛集团信息技术助理副总裁、CIO张决:双中台助力蒙牛数字化转型
蒙牛双中台支撑线上线下融合,线上引流线下提货,数据洞察赋能,助力传统销售模式数字化变革。
1138 0
蒙牛集团信息技术助理副总裁、CIO张决:双中台助力蒙牛数字化转型