先总结下:

1. using namespce std;尽量不要(或者强硬一点,不许)在头文件中使用。

解析: 不让这么用,主要原因就是防止名字重复(即自定义变量名和std中名字重复),因为头文件会被很多地方使用,你不知道这个using能覆盖多大范围。

2. 头文件最好不用,但在cpp文件中可以使用(但有比这更好的方法,之后说),但是,有个条件,必须用在所有#include之后。

解析:如果在cpp文件中使用using namespace std; 而且,若放在#include之前,那相当于用在头文件中了,你不知道头文件展开后,这个using覆盖多大的范围。所以,必须用在所有#include之后。

3.  在头文件和cpp文件中,可以使用using命令(如 using std::cout;) 来替代 using编译命令(using namespace std;)。

举例说明:

using namespace std; // 不要这样做

而应这样做

int y;
std::cin >> y ;
std::cout << y << std::endl;

或者这样做

using std::cout;
using std::cin;
int y;
cin >> y;
cout << y;

4. 当然,还有人想把using namespace std;放在自定义的命名空间中,你可以去试试。

--------------------- 
作者:c+ 
原文:https://blog.csdn.net/qnavy123/article/details/79914339
版权声明:本文为博主原创文章,转载请附上博文链接!

[C++] 头文件中不要用using namespace std的更多相关文章

  1. 我的探究:为什么.h头文件中不要写using namespace std

  2. 不要在头文件中使用 using namespace std;

    不要在头文件中使用(using namespace std;).   若你使用了using namespace std;,在某一头文件中,那么包含这些头文件的文件就失去了"namespace ...

  3. 一定不要在头文件中using namespace XXX

    一定不要在头文件中using namespace XXX,这样会造成名字空间污染,引发ambiguous错误,又难以定位.

  4. (转) [C++]我再也不想在任何头文件中看到using namespace xxx这种句子了(译)

    原文的传送:I don’t want to see another “using namespace xxx;” in a header file ever again 转自  http://blog ...

  5. c++ inline使函数实现可以在头文件中,避免多重定义错误

    作者:Jon Lee链接:https://www.zhihu.com/question/53082910/answer/133612920来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...

  6. [C++] 头文件中的#ifndef,#define,#endif以及#pragma用法

    想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文 ...

  7. cctype头文件中的一些内容

    1. string 标准库 1.1初始化 string s1; 默认构造函数s1为空 string s2(s1); 将s2初始化为s1的一个副本 string s3(“value”); 将s3初始化为 ...

  8. Effective Objective-C 2.0 — 第二条:类的头文件中尽量少引入其他头文件

    第二条:类的头文件中尽量少引入其他头文件 使用向前声明(forward declaring) @class EOCEmployer 1, 将引入头文件的实际尽量延后,只在确有需要时才引入,这样就可以减 ...

  9. c语言头文件中定义全局变量的问题

    c语言头文件中定义全局变量的问题 (转http://www.cnblogs.com/Sorean/) 先说一下,全局变量只能定义在 函数里面,任意函数,其他函数在使用的时候用extern声明.千万不要 ...

随机推荐

  1. 如何配置sigar在Linux和Windows下使用java语言获得各种系统信息

    转自:https://blog.csdn.net/qq_27093465/article/details/70227619

  2. excache.xml作用

    name:缓存名称. maxElementsInMemory:缓存最大个数. eternal:对象是否永久有效,一但设置了,timeout将不起作用. timeToIdleSeconds:设置对象在失 ...

  3. Flutter学习笔记(24)--SingleChildScrollView滚动组件

    如需转载,请注明出处:Flutter学习笔记(23)--多 在我们实际的项目开发中,经常会遇到页面UI内容过多,导致手机一屏展示不完的情况出现,以Android为例,在Android中遇到这类情况的做 ...

  4. springBoot配置elasticsearch搜索

    1.本地安装elasticsearch服务,具体过程见上一篇文章(安装和配置elasticsearch服务集群) 2.修改项目中pom文件,引入搜索相关jar包 <!-- elasticsear ...

  5. CSS 之Grid网格大致知识梳理1

    CSS所提供的关于网格Grid属性让我们可以更方便编写页面以及布局,而它的一些主要应用属性如下: 1.将父容器的display属性值设置为grid 即可将其转换为网格容器: 2.在网格容器中添加列的属 ...

  6. Mysql如何添加外键,如何实现连表查询

    创建表student和表score,表student设置主键,表score设置表student中属性相同的为外键: 创建student表 create table student ( id int p ...

  7. CodeForces 909E

    题意略. 思路:一个拓扑排序的题目吧.肯定是要先处理后面那个任务,再处理前面那个任务,我的思路是尽力先把主处理器能操作的先操作完,然后再把副处理器能操作完的再操作完,这样循环,直到处理完全部. 定义t ...

  8. CentOS 7下安装配置搭建jdk+tomcat+MariaDB环境

    1.JDK安装 注意:rpm与软件相关命令 相当于window下的软件助手 管理软件 步骤: 1)查看当前Linux系统是否已经安装java 输入 rpm -qa | grep java 2)卸载两个 ...

  9. Flink的Job启动TaskManager端(源码分析)

    前面说到了  Flink的JobManager启动(源码分析)  启动了TaskManager 然后  Flink的Job启动JobManager端(源码分析)  说到JobManager会将转化得到 ...

  10. 在.net core wep项目中使用Session

    第1步:添加包引用 Install-Package Microsoft.AspNetCore.Session 第2步:添加代码启用Session 在项目Startup.cs文件的ConfigureSe ...