C++中名稱空間與 using的作用
阿新 • • 發佈:2021-01-14
文章目錄
名稱空間是什麼
為了讓編寫大程式以及多個廠商現有程式碼組合起來更方便,比如有
- A廠寫的程式碼裡面包含了一個函式wanda()
- B廠寫的程式碼裡面也包含了一個函式wanda()
此時如果你想把A B兩個廠商的程式碼組合起來,就有可能會發生函式名字衝突這樣的事情。
而名稱空間能讓廠商把其產品封裝在一個叫做名稱空間的單元中,這樣就可以使用名稱空間來指出想用哪個廠商的產品。
比如使用A公司的wanda()函式可以這樣寫
A:wanda();
使用B公司的wanda()函式可以這樣寫
B::wanda();
using的使用
看到上面可能就會有同學問,每一次都在前面加一個名稱空間,那不是很繁瑣嘛,所以為了解決這一問題,就誕生了using這一關鍵字。
比如你使用
using namesapce A;
wanda();
表達的意思就和
A::wanda();
是一樣的,就是你使用了using namesapce A
這一語句以後,你以後使用的函式都預設是A公司的函式。
using namesapce std;的解釋
我們在開始學習C++的時候都會遇到一個問題,這一句using namespace std;
到底是幹什麼用的,有了上面的知識以後我們知道,他的意思就是後面用的函式都是std這個名稱空間(公司)
std
又是什麼呢?C++的標準組件,都被放在了
std
這一名稱空間裡面了,所以如果你想使用C++的標準組件你就需要從這個名稱空間中呼叫函式。
但是該方法也有缺陷,比如下面的程式碼
/*A空間包含的兩個函式test1() test2()*/
test1();
test2();
/*B空間包含的兩個函式test1() test2()*/
test1();
test2();
如果我們想呼叫A空間的中test1()
和B空間中的test2()
那麼我如果使用上面的方法來寫程式碼的話會是下面這樣
using namespace A;
test1();
using namespace B;
test2 ();
這會很不方便,特別是當名稱空間很多的時候,而且特別容易出錯,因為你沒辦法在開頭的時候就寫好,要使用哪一些名稱空間,因為每個名稱空間空間都有作用域的,使用using namespace x;
後,後面的函式都會預設從x裡面出來,這就需要我們一邊寫程式碼還要一邊寫using namespace x;
很容易出錯。所以我們很多時候會用下面這樣的方式來寫
using A::test1();
using B::test2();
test1();//預設使用的是A中的test1
test2();//預設使用的是B中的test2