吹毛求疵-命名空间的使用

代码:

#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(两个参数)函数的参数我猜想是标准类型的吧。

因为有了上次的“吹毛求疵”,我这次写这些没有之前想的那么多了。

继续加油~~


发布了126 篇原创文章 · 获赞 15 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章