代码:
#include <iostream>
using namespace std; //命名空间中有一个distance(两个参数)
namespace mydistance
{
void distance(int a) //在自定义命名空间中定义带一个参数的distance函数
{
cout<<"It's my distance!"<<endl;
}
}
using namespace mydistance;
int main()
{
int a=3;
distance(a); //想测试一下使用两个命名空间中的同名函数,参数不同的情况下会不会产生冲突
return 0;
}
测试内容:
在标准命名空间std中有一个distance()函数,其中有两个参数
在我自定义的命名空间mydistance中也有一个distance()函数,但是只有一个参数
想测试一下在使用两个命名空间的情况下,这样会不会产生冲突
结果:
下图为贺老师视频的一段截图:(在文件开始只用了一个using std::cout;)
小结:
结果是没有冲突!
说明在参数个数不同的情况下,不加命名空间限定域作用符(如std::)的情况下,系统会根据参数个数的不同而调用不同命名空间的同名函数。
起初想测试时是看到老贺的视频中distance(p1,p2),p1、p2是两个类(并且这个函数封装在自己的命名空间中)。当时那个程序中没有用using namespace std语句,我在想如果在使用了std命名空间后又用了这句没有加自己命名空间的函数是不是会出错。
写完自己的这段代码回去测试了一下贺老师的,结果也没错,因为参数是自定义类,std里边的distance(两个参数)函数的参数我猜想是标准类型的吧。
因为有了上次的“吹毛求疵”,我这次写这些没有之前想的那么多了。
继续加油~~