C++ 为什么不让用using namespace std; ?

我看书上也这么写,贴吧里的人也这么写。可是有些人不让用,也没说原因。... 我看书上也这么写,贴吧里的人也这么写。可是有些人不让用,也没说原因。 展开
 我来答
zjfaok
推荐于2018-04-30 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1613万
展开全部

std命名空间里面定义了很多程序员常用的名称(函数名、变量名、类名),只要一不注意就可能在程序中定义同名的东西,这样就会导致很难发觉的错误(编译器可能提示的是标准库内部的错误,实际上却是由用户的代码引起的)……


例如下面的代码在VS编译器上是不通过的:

#include <iostream>
using namespace std;

template<typename T>
void swap( T& a, T& b )
{
 T l=a;a=b;b=l;
}

int main(){
 int m=1,n=2;
 double x=5.0,y=8.0;
 swap<int>(m,n);
 swap<double>(x,y);
}

报错是error C2668: “swap”: 对重载函数的调用不明确


但是代码中看不出重载,实际上是因为标准库定义了相同名字的函数……

xoaxa
2014-01-25 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3475万
展开全部
不是不让用,否则using还有存在价值吗?其实是为了强化命名空间概念,这是为了商品代码(多人完成的应用软件)避免函数、变量等命名冲突有效的方法,虽说多打几个字符稍显麻烦,但可以消除命名冲突,不得已而为之。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
26666666666
2014-01-25 · TA获得超过135个赞
知道小有建树答主
回答量:230
采纳率:100%
帮助的人:120万
展开全部
标准的写法推荐用域运算符 比如std::cout std::cin 最规范最安全 但是 using本身很方便 也很适合初学
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逸明鲸人
2014-01-25 · TA获得超过867个赞
知道小有建树答主
回答量:409
采纳率:100%
帮助的人:435万
展开全部
如果包含c++的头文件是必须要用的 否则编译错误
如果只有c的头文件 不用也可以 至少可以编译通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式