C 命名空間是什麼?命名空間的概念及使用!

2021-09-12 15:00:34 字數 1401 閱讀 5859

舉個例子:有乙個學校,世界之大無奇不有,恰恰這個學校就比較奇怪。那你可能就會問了,這個學校究竟奇怪在**?這個學校奇怪的就是不僅有很多生日相同的學生,還有不少同學重名重姓。然後有一天放學,學校裡有人撿到了乙個錢包,裡面有張三的學生證,這個錢包就被送到了校長手裡,校長看著學生這麼懂事,對其大加讚賞,於是便開啟廣播同時向各班表揚了這名學生,並且讓名叫張三的學生來校長辦公室一趟。過了幾分鐘,校長開啟門一看,門外站了七八個大漢,原來這些分別都是二三四各個班的張三,還有各個年級的張三,校長瞬間矇圈,也不知道自己叫的是哪個張三了。

故事講完了,上面的各個班級各個年級就是不同的「空間」,張三就是乙個「名字」,那個矇圈的校長自然就是編譯器啦。「校長」矇圈,程式自然就無法正常的執行了。那麼為什麼校長沒有找到真正的張三呢?原因就在於各個空間中的變數、函式、類命名發生了衝突、命名被相互汙染了,所以為了解決這種問題,我們就加入了命名空間。之後校長再要找張三,他就會在廣播上喊高二三班的張三來我辦公室一下,就可以精確的找到需要找的內容了。

在c/c++中,變數、函式和後面要學到的類都是大量存在的,這些變數、函式和類的名稱將都存在於全域性作

用域中,可能會導致很多衝突。使用命名空間的目的是對識別符號的名稱進行本地化,以避免命名衝突或名字

汙染,namespace關鍵字就是針對這種問題而出現的。

namespace + 命名空間名稱 +

1. 普通的命名空間

namespace n1 // n1為命名空間的名稱

}

2.命名空間可以巢狀

namespace n2

namespace n3

}}

3. 同乙個工程中允許存在多個相同名稱的命名空間(編譯器會合成到同乙個命名空間)

// 編譯器最後會合成同乙個命名空間中

namespace n1

}

乙個命名空間就定義了乙個新的作用域,命名空間中的所有內容都侷限於該命名空間中

1.加命名空間名稱及作用域限定符

int main()

2.使用using將命名空間中成員引入

using n::b;

int main()

3.使用using namespace 命名空間名稱引入

using namespce n;

int main()

戳這裡:

spring p命名空間 c命名空間

p命名空間 1.需要引入命名空間p 並不真實存在 是在spring內部中實現的 xmlns p 2.如果是引用注入需要加 ref字尾 p和c命名空間 並不適用於集合引數 c命名空間 1.需要引入命名空間c 並不真實存在 是在spring內部中實現的 xmlns c 2.可以使用c 引數名 或c 引數...

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

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

C 命名空間,也有叫命名空間

在c 中,名稱 name 可以是符號常量 變數 巨集 函式 結構 列舉 類和物件等等。為了避免在大規模程式設計中,以及在程式設計師使用各種各樣的c 庫時,這些識別符號的命名發生衝突,標準c 引入了關鍵字namespace 命名空間 名字空間 命名空間 名域 可以更好地控制識別符號的作用域。std是c...