通俗的解釋:
using namespace std 這句的意思是 使用命名空間 std
比如 杭州有乙個西湖 潮州也有個西湖
如果你只說 西湖 ,可能別人就不知道你是說那裡的西湖
如果你說 杭州的西湖, 別人就知道你是說杭州的西湖
這裡的杭州就好像是使用 using namespace std 。
如果是用某個 namespace 中的成員,那麼就要用指定 namespace。
可以有兩種方式:
(1) 直接 using namespace ***;
這樣用到的時候就會從這個 namespace 查詢
(2) 在用到的時候在前面指定 ***::
命名空間 顧名思義是為了解決命名衝突的
在c++中我們經常要包含一些標頭檔案,來獲得它們包含的函式的支援。但標頭檔案中除了我們要用的函式外,還有像經常用的cin,cout,endl等東西,它們實際上是全域性物件,在編譯和鏈結的過程中編譯器要考慮它們的,而且這些標頭檔案中包含的不僅僅是這些東西,有很多很多。而如果我們的程式不需要這些東西,那編譯器就會為它們浪費很多時間。現在把函式和這些全域性變數,類,和模板分開,函式定義到頭檔案中,而全域性變數,類,和模板定義到命名空間中,就不會有這種情況了。
命名空間存在的目的,是為了解決全域性域的名字汙染問題(雖然只是部分解決)。在乙個大型專案中,很容易出現大量全域性名稱,很容易造成名稱衝突,初期只能採取加長名稱的長度來解決,但是大量的長名稱維護起來同樣很痛苦,因此,通過命名空間把全域性名稱都放在不同的作用域中,能有效減少名稱衝突的發生,但命名空間並沒有完全解決名字汙染問題,因為命名空間本身的空間名稱也是乙個全域性名字,同樣存在汙染問題。
作用域問題:
1.未命名的命名空間的定義區域性於特定檔案,可以在給定檔案中不連續,但從不跨越多個文字檔案。
2. 如果標頭檔案定義了未命名的命名空間,那麼,在每個包含該標頭檔案的檔案中,該命名空間的名字將定義不同的區域性實體。
3. 未命名的命名空間用於宣告區域性於檔案的實體。在未命名的命名空間中定義的變數在程式開始時建立,在程式結束之前一直存在,類似c語言中的static靜態宣告。
4.c++不贊成檔案靜態宣告,應該避免檔案靜態而使用未命名的命名空間代替。
5.除了在函式或其他作用域內部,標頭檔案不應該包含using指示或using宣告。
6.using宣告可以出現在全域性作用域、區域性作用域或者命名空間作用域中。類作用域中的using宣告侷限於被定義類的積累中定義的名字。
C 命名空間通俗講解
內容有所改動,示例 更加清晰明了。假設這樣一種情況,當乙個班上有兩個名叫liming的學生時,為了明確區分它們,我們在使用名字之外,不得不使用一些額外的資訊,比如他們的家庭住址,或者他們父母的名字等等。同樣的情況也出現在 c 應用程式中。例如,您可能會寫乙個名為 printabc 的函式,在另乙個可...
C 命名空間解釋
此文 於網路,但由於種種原因,不能確定其始作者,特此說明 比如你加了using namespace std 那麼std命名空間中定義的東西就不用加std 了。而iostream.h這個標頭檔案是為了相容c,c根本就沒命名空間這個概念,所以不用加using namespace std 了 如果用通俗的...
C 命名空間解釋
using關鍵字 如果在程式中需要多次引用某個命名空間的成員,那麼按照之前的說法,我們每次都要使用範圍解析符來指定該命名空間,這是一件很麻煩的事情。為了解決這個問題,人們引入了using關鍵字。using語句通常有兩種使用方式 using namespace 命名空間名稱 將整個命名空間釋放。usi...