为什么尽量不要使用using namespace std;

煮茶听雪 2015-10-29 10:33:53
如题,最近在回顾C++ primer,发现给的编程题答案中没有使用using namespace std;的,都是用using std::cin; using std::vector;这种,以前习惯了用using namespace std;,我想问问为什么不使用using namespace std;?
...全文
873 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2015-10-29
  • 打赏
  • 举报
回复
如果用了using namespace std; std名字空间下的所有变量、函数、类等都可以不加std::修饰而直接使用,在一些大的项目中很容易造成和其他的名字冲突,同时容易引起错误,小项目你可能感觉不出来,但这种习惯其实不好,而且也就失去了名字空间本身的意义了
lm_whales 2015-10-29
  • 打赏
  • 举报
回复
听说怕名字冲突
yshuise 2015-10-29
  • 打赏
  • 举报
回复
你定义的变量、函数、类,还有其他库,会同stl重名就麻烦了。
fefe82 2015-10-29
  • 打赏
  • 举报
回复
前一阵子还在 csdn 上看到一个 using namespace std; 之后, 自己定义的 ::advance() 跟 std::advance() 进行 overload resolution。 作者本意是使用 ::advance() ,结果 overload resolution 解析到了 std::advance() 这种情况最悲剧了,不容易查错。
勤奋的小游侠 2015-10-29
  • 打赏
  • 举报
回复
用到什么就声明什么,这只是原则性问题。 就像头文件,你没用到的头文件也能包含进去,但是没有必要。只会增加编译器的工作量。
jian_vv 2015-10-29
  • 打赏
  • 举报
回复
std是个很大的库,如果你项目中引用了其他的库而且也写了using namespace std,很容易造成命名冲突(就是类重名) 其实一般using namespace std是没关系的,大家都是向标准库看齐的,很少重名。 一般在一个顶层项目中使用了多个库,如果一个库是最主要的库,其实给它using namespace也是关系不大的,例如你有一个游戏项目使用了ogre库,cegui,ois,那么using namespace ogre也没关系,但是另外两个库就不要 using namespace了, 另外头文件不要写using namespace,因为这样写的话包含这个头文件的所有文件都会using namespace了,

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧