C++ 中的 'using namespace std' 是什麼意思?


考慮這樣一種情況,在一個班級裡有兩個名字相同的人,都叫 Piyush。當我們需要區分他們時,肯定需要使用一些額外的資訊,比如他們居住的區域(如果他們住在不同的區域),或者他們母親或父親的名字等等。

同樣的情況也可能出現在你的 C++ 應用程式中。例如,你可能正在編寫一些程式碼,其中包含一個名為 xyz() 的函式,並且還有一個可用的庫也包含相同函式 xyz()。現在,編譯器無法知道你的程式碼中指的是哪個版本的 xyz() 函式。

名稱空間旨在克服這種困難,並用作額外的資訊來區分在不同庫中可用的名稱相同的功能、類、變數等。使用名稱空間,你可以定義名稱定義的上下文。從本質上講,名稱空間定義了一個作用域。

C++ 擁有一個標準庫,其中包含你在構建應用程式時使用的常見功能,例如容器、演算法等。如果這些庫使用的名稱是公開的,例如,如果它們在全域性範圍內定義了一個佇列類,那麼你將無法再次使用相同的名稱而不會發生衝突。因此,他們建立了一個名稱空間 std 來包含此更改。

using namespace 語句的意思是在它存在的作用域中,使 std 名稱空間下的所有內容都可用,而無需在每個內容之前都加上 std:: 字首。

雖然這種做法對於簡短的示例程式碼或簡單的程式來說是可以的,但將整個 std 名稱空間引入全域性名稱空間並不是一個好習慣,因為它違背了名稱空間的目的,並可能導致名稱衝突。(即使最初沒有名稱衝突,隨著更多程式碼、庫等新增到專案中,在維護過程中也可能會出現名稱衝突。)這種情況通常稱為名稱空間汙染。

更新於: 2019-07-30

11K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告