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

代碼:

#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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章