C++中using namespace std到底该怎么理解

98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。举一个实例,请注意以下两个头文件://one.hcharfunc(char)... 98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。举一个实例,请注意以下两个头文件: //one.h charfunc(char); classString{...};//somelib.h classString{...};如果按照上述方式定义,那么这两个头文件不可能包含在同一个程序中,因为String类会发生冲突。所谓命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立起一道道围墙。上面是百度百科中的一段话,但是不理解啊,难道使用命名空间既可以将两个头文件包含到一个程序中了?可是两个Sting类还是会发生冲突啊 展开
 我来答
Anmine柒
2015-08-25 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:74
采纳率:0%
帮助的人:64.5万
展开全部
讲一个上课时老师给我们举的例子。可以把命名空间理解为省份,而命名里面包含函数理解为车牌上的号码。我们经常看到的车牌都是省份的简写后面跟一个字符串,例如粤B88888,粤B就是命名空间,88888就是函数名称。使用了using namespace std就是告诉编译器我下面使用的所有没带省份的车牌号码都是std的。如果你想在两个同名的不同函数,就需要告诉编译器怎么区分他们,最好的办法就是加上他们命名空间的名称,例如std::cout,这样子就能把粤B88888和京B88888区分开来。(以上车牌都是随便捏造的。)
追问
就是说除了std还有其他的命名空间吗?还是什么其他意思,没太懂。
还是说我上面讲的两个都包含classString{...};的头文件不能同时存在于std中
追答
恩。就是一个文件可以有多个命名空间,一个.h/.cpp可以引用多个文件。如果你要用两个.h的classString{...};就得在他们的文件里面给他们加命名空间,用的时候说明是哪个命名空间的。不过一般没人这么命名,所以这个用法很少用。
zjfaok
2015-08-25 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1612万
展开全部
只有头文件的编写者了解并正确地使用了 namespace,才能使 namespace 这个机制发挥作用……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式