命名空間 總結

2021-09-27 03:55:19 字數 774 閱讀 3462

1.namespace解決了命名衝突問題(可以放 函式、變數、結構體、類)

2.命名空間必須定義在全域性作用域下

3.命名空間可以巢狀命名空間

4.命名空間是開放的,可以隨時給命名空間新增內容。

巢狀時可用 using namespace a::b;

匿名 命名空間

當定義乙個命名空間時,可以忽略這個命名空間的名稱:

namespce

編譯器在內部會為這個命名空間生成乙個唯一的名字,而且還會為這個匿名的命名空間生成一條using指令。所以上面的**在效果上等同於:

namespace _unique_name

using namespace unique_name;

在匿名命名空間中宣告的名稱也將被編譯器轉換,與編譯器為這個匿名命名空間生成的唯一內部名稱(即這裡的__unique_name)繫結在一起。還有一點很重要,就是這些名稱具有internal鏈結屬性,這和宣告為static的全域性名稱的鏈結屬性是相同的,即名稱的作用域被限制在當前檔案中,無法通過在另外的檔案中使用extern宣告來進行鏈結。如果不提倡使用全域性static宣告乙個名稱擁有internal鏈結屬性,則匿名命名空間可以作為一種更好的達到相同效果的方法。

注意:命名空間都是具有external 連線屬性的,只是匿名的命名空間產生的__unique_name__在別的檔案中無法得到,這個唯一的名字是不可見的.

c++ 新的標準中提倡使用匿名命名空間,而不推薦使用static,因為static用在不同的地方,涵義不同,容易造成混淆.另外,static不能修飾class

Python命名空間總結 「命名空間之禪」

python中的命名空間,在使用點號.和不使用點號.兩種情況下使用變數名時,會有不同的處理方式。賦值語句 var value 僅僅是建立或改變當前作用域變數名,除非使用了global或者nonlocal關鍵字 引用語句 var 搜尋路徑如下 l local 在當前作用域下搜尋變數名var e 在所有...

命名空間學習總結

分類 c 2011 05 12 11 35 288人閱讀收藏 舉報 1 using namespace 命名空間主要是為了解決在大的互相合作的工程中,出現像變數 函式 結構 列舉 類以及類和結構的成員的名稱相互衝突的可能。declaration region 宣告區域,是可以在其中進行宣告的區域。p...

C 命名空間 預設命名空間與匿名命名空間

2.匿名命名空間 預設命名空間也叫全域性命名空間,所有沒有置於某一具體命名空間下的 即在預設命名空間下,例如func main 函式。include void func void intmain int argc,char ar void func void 需要注意的是 這個就是類似於c語言裡簡單...