C++中using namespace std到底该怎么理解
98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。举一个实例,请注意以下两个头文件://one.hcharfunc(char)...
98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。举一个实例,请注意以下两个头文件: //one.h charfunc(char); classString{...};//somelib.h classString{...};如果按照上述方式定义,那么这两个头文件不可能包含在同一个程序中,因为String类会发生冲突。所谓命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立起一道道围墙。上面是百度百科中的一段话,但是不理解啊,难道使用命名空间既可以将两个头文件包含到一个程序中了?可是两个Sting类还是会发生冲突啊
展开
2个回答
展开全部
讲一个上课时老师给我们举的例子。可以把命名空间理解为省份,而命名里面包含函数理解为车牌上的号码。我们经常看到的车牌都是省份的简写后面跟一个字符串,例如粤B88888,粤B就是命名空间,88888就是函数名称。使用了using namespace std就是告诉编译器我下面使用的所有没带省份的车牌号码都是std的。如果你想在两个同名的不同函数,就需要告诉编译器怎么区分他们,最好的办法就是加上他们命名空间的名称,例如std::cout,这样子就能把粤B88888和京B88888区分开来。(以上车牌都是随便捏造的。)
追问
就是说除了std还有其他的命名空间吗?还是什么其他意思,没太懂。
还是说我上面讲的两个都包含classString{...};的头文件不能同时存在于std中
追答
恩。就是一个文件可以有多个命名空间,一个.h/.cpp可以引用多个文件。如果你要用两个.h的classString{...};就得在他们的文件里面给他们加命名空间,用的时候说明是哪个命名空间的。不过一般没人这么命名,所以这个用法很少用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询