C++中的namespace

這個(gè)namespace是干啥的呢?這個(gè)詞的中文意思就是命名空間,它主要是提供了一個(gè)域,這個(gè)域中出現(xiàn)的名字不與其他域中的名字產(chǎn)生沖突吕粗。

一個(gè)域中的名稱可以被外界引用這說明這些名字具有外部連接屬性,當(dāng)然常量默認(rèn)情況下還是僅具有內(nèi)部連接屬性的旭愧,為什么呢溯泣?那就要看這里了。

你可以在程序中引入既有命名空間中的名字榕茧,只要使用using聲明即可,比如下圖所示:

引入一次即可客给,然后你就可以直接使用了用押。如果使用域中存在同名變量,那么會出現(xiàn)錯(cuò)誤靶剑,因?yàn)榫幾g器會認(rèn)為這是對該namespace中的同名變量進(jìn)行二次聲明或定義蜻拨,會犯多重定義的錯(cuò)誤。如下圖所示:



所以說using指令是一個(gè)聲明式桩引,在某個(gè)域中它是唯一的缎讼。

而你單純地使用域操作符是另外一回事,你使用域操作符只不過是使用namespace中的成員而已坑匠,但是它的優(yōu)先級沒有本地變量高血崭,如果有本地同名變量,namespace中的變量會被屏蔽厘灼。如下圖所示:



所以如果你確實(shí)想使用namespace中的成員夹纫,那你用using可以確保你就是使用它。

另外一個(gè)就是使用using

namespace指令设凹,后面加上你要引用的命名空間的名稱舰讹,它使得該命名空間的所有名稱都可見。如果你把這個(gè)指令放在了全局域中闪朱,那么它就到處都可見了月匣。比如下圖所示:

這里有幾點(diǎn)需要注意的。1奋姿、如果在同級域中已經(jīng)存在了一個(gè)本地name锄开,那你就不能再使用using來引進(jìn)這個(gè)name了。如果你確實(shí)這么做了称诗,本地name會屏蔽namespace中的name院刁。

不過經(jīng)過驗(yàn)證似乎現(xiàn)在的VS中的namespace只能在內(nèi)部進(jìn)行聲明,而不能在外部粪狼。在外部只能是引用該namespace中的成員而已退腥。

2任岸、當(dāng)你在一個(gè)同級域中,通過using namespace引入一個(gè)命名空間狡刘,并且這個(gè)命名空間中的名稱和本地變量名稱一樣時(shí)享潜,該namespace中的名稱會被屏蔽,除非你加限定符明確指出來嗅蔬。

在這里全局域直接用域操作符來分辨剑按,下面看個(gè)例子。


一般來說澜术,全局性地使用using

namespace xxx艺蝴;會使該namespace中的成員遍布整個(gè)程序,這樣你都搞不清楚哪些是你添加進(jìn)去的鸟废。所以推薦的使用方式是在特定的作用域中使用using

namespace指令猜敢,或者使用命名空間名稱+域操作符來引用命名空間成員。這個(gè)限制是C++ Primer Plus中所說的盒延。

不過缩擂,我個(gè)人認(rèn)為,現(xiàn)在的C++不允許你在namespace之外聲明新的name添寺,因此你不可能在外面引入新的name胯盯,而不讓你隨便使用全局性質(zhì)的namespace的原因可能是怕你分不清哪些是該namespace中的名字吧。而如果某些系統(tǒng)不支持命名空間的話计露,你可以完全只使用頭文件博脑。

Namespace是可以嵌套的。

你可以給namespace起個(gè)別名票罐,方便使用和記憶趋厉,方法如下:


無名namespace。這種命名空間只能現(xiàn)聲明現(xiàn)用胶坠,它往往局限于某個(gè)作用域中之內(nèi)君账。因?yàn)闆]名所以你不能顯式引用它的成員,也不具有外部連接屬性沈善,它相當(dāng)于文件域中的static變量乡数。它是作為本文件中static變量的替代方案而存在的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闻牡,一起剝皮案震驚了整個(gè)濱河市净赴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌罩润,老刑警劉巖玖翅,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡金度,警方通過查閱死者的電腦和手機(jī)应媚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猜极,“玉大人中姜,你說我怎么就攤上這事「” “怎么了丢胚?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長受扳。 經(jīng)常有香客問我携龟,道長,這世上最難降的妖魔是什么勘高? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任峡蟋,我火速辦了婚禮,結(jié)果婚禮上相满,老公的妹妹穿的比我還像新娘。我一直安慰自己桦卒,他們只是感情好立美,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著方灾,像睡著了一般建蹄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上裕偿,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天洞慎,我揣著相機(jī)與錄音,去河邊找鬼嘿棘。 笑死劲腿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸟妙。 我是一名探鬼主播焦人,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼重父!你這毒婦竟也來了花椭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤房午,失蹤者是張志新(化名)和其女友劉穎矿辽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袋倔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年雕蔽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奕污。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡萎羔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碳默,到底是詐尸還是另有隱情贾陷,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布嘱根,位于F島的核電站髓废,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏该抒。R本人自食惡果不足惜慌洪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凑保。 院中可真熱鬧冈爹,春花似錦、人聲如沸欧引。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芝此。三九已至憋肖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間婚苹,已是汗流浹背岸更。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膊升,地道東北人怎炊。 一個(gè)月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像廓译,于是被迫代替她去往敵國和親结胀。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容