C 中的命名空間(namespace)

2021-06-08 20:37:33 字數 1408 閱讀 7359

c++中的命名空間(namespace) 。

為了解決這一問題,c++提出了命名空間機制,所謂命名空間即使有程式設計師命名的記憶體區域,程式設計師可以根據需要指定有名的記憶體空間用來存放指定的實體。把一些全域性實體分別存放在不太的命名空間中,從而與其他全域性實體分隔開來,這樣編譯器就可以根據不同的命名空間區分相同名字的實體。如上面的例子,將兩個標頭檔案中的全域性變數分別放到兩個不同的命名空間中: /*

header1.h

*/ 

namespace ns1

/*header2.h

*/ 

namespace ns2

那麼在主函式main中呼叫變數a時就可以用命名空間名和作用域操作符「::」來區分不同兩個標頭檔案中的變數a;如ns1::a=10;則表示給header1.h中的變數a賦值,ns2::a=10;則表示給header2.h中的變數a賦值。

命名空間的用法及性質:

1.宣告命名空間

namespacenamespace_name                               //namespace_name  指命名空間名,可以是任意合法的識別符號

2.呼叫命名空間

(1)直接使用命名空間名和作用域操作符「::」+實體名

ns1::a=10;  

(2)使用命名空間的別名和

作用域操作符「::」+實體名

namespacen1 = ns1;

n1::a=10;

(3)使用using命名空間成員名

usingns1::a;   //說明下面要用到ns1這個命名空間中的a成員,下面可以直接呼叫a即可,這時預設為ns1::a。

a=10;   // 這時等價於ns1::a=10; 

(4)使用using namespace 命名空間

using namespace

ns1;   //說明下面要用到ns1這個命名空間中的某些成員,下面可以直接呼叫a即可,這時預設為

ns1::a。

a=10;   // 這時等價於

ns1::a=10; 

無名命名空間

以上說的命名空間都是預設指有名命名空間,c++支援無名命名空間,即宣告命名空間時不帶名,這樣無法通過命名空間名字呼叫該空間中成員,所以無名命名空間可以使其他檔案無法使用該空間中的成員,如:

namespace

這裡用無名命名空間宣告了乙個函式function,由於該空間沒有名字,其他檔案無法通過命名空間名來使用他的成員,所以達到了將該函式的作用域限制在本檔案內的目的。作用和用static關鍵字宣告的靜態函式相似,而在無名命名空間中可以同時宣告多個「靜態函式」。

C 的記憶體模型以及命名空間 namespace

1.儲存連續性 在c 中使用四種不同的方案來儲存資料 2.靜態成員變數的記憶體分配 如果乙個類中有靜態成員 static 注意,不能在類的宣告中初始化靜態成員,這是因為宣告只是描述了如何分配記憶體,而並沒有分配記憶體,所以,對於靜態成員的初始化,需要在類的宣告之外進行 所以,靜態成員在類的宣告中宣告...

深入剖析js命名空間函式namespace

生成命名空間的方法繫結到jquery上 阿里員工寫的開源資料庫連線池的druid的源 時,發現了其中在jquery的原 中又定義了乙個命名空間的函式 namespace 其 如下 namespace druid.index druid.index function submit function 使...

c 中regex的命名空間 c 命名空間

system.transactions 命名空間 注意 此命名空間在 net framework 2.0 版中是新增的。使用 system.transactions 命名空間包含的類可以編寫自己的事務應用程式和資源管理器。具體地說,可以建立和參與 與乙個或多個參與者 本地或分布式事務。system....