更新時(shí)間:2020-03-31 來(lái)源:黑馬程序員 瀏覽量:
編寫(xiě)程序過(guò)程中,名稱(name)可以是符號(hào)常量、變量、函數(shù)、結(jié)構(gòu)、枚舉、類和對(duì)象等等。工程越大,名稱互相沖突性的可能性越大。另外使用多個(gè)廠商的類庫(kù)時(shí),也可能導(dǎo)致名稱沖突。為了避免,在大規(guī)模程序的設(shè)計(jì)中,以及在程序員使用各種各樣的
C++ 庫(kù)時(shí),這些標(biāo)識(shí)符的命名發(fā)生沖突,標(biāo)準(zhǔn) C++ 引入關(guān)鍵字 namespace(命名空間/名字空間/名稱空間),可以更好地控制標(biāo)識(shí)符的作用域。推薦了解黑馬程序員C++工程師培訓(xùn)課程。
例如,我們?cè)?C 語(yǔ)言中,通過(guò) static 可以限制名字只在當(dāng)前編譯單元內(nèi)可見(jiàn),在 C++ 中我們通過(guò) namespace 來(lái)控制對(duì)名字的訪問(wèn)。
1. namespace 語(yǔ)法
1. namespace 中可定義常量、變量、函數(shù)、結(jié)構(gòu)體、枚舉、類等
2. namespace 只能在全局定義。
3. namespace 支持嵌套定義。
4. namespace 是開(kāi)放的,可隨時(shí)添加新的成員。
5. namespace 關(guān)鍵字可以為已有空間名字增加別名
6. 無(wú)名命名空間意味著命名空間中的符號(hào)只能在本文件中訪問(wèn),相當(dāng)于給符號(hào)增加了 static 修飾。推薦了解
1.1 namespace 可包含的成員
1.2 namespace 只能在全局定義
1.3 namespace 支持嵌套定義
名字空間 my_space 中可以嵌套定義子名字空間 my_sub_space.
1.4 namespace 是開(kāi)放的,隨時(shí)可添加成員
1.5 namespace 為已有空間名字創(chuàng)建別名
1.6 namespace 匿名名字空間
無(wú)名命名空間意味著命名空間中的符號(hào)只能在本文件中訪問(wèn),相當(dāng)于給符號(hào)增加了 static 修飾,只能在當(dāng)前文件內(nèi)訪問(wèn)。
2. 使用 namespace 中符號(hào)
使用名字空間中定義的符號(hào)有三種方式:
1. 直接通過(guò) namespace 作用域訪問(wèn)
2. using 聲明指定某個(gè)符號(hào)在某個(gè)作用域下可見(jiàn)
3. using 編譯指令指定名字空間中所有符號(hào)在在某個(gè)作用域下可見(jiàn)
2.1 直接訪問(wèn)
2.2 using 聲明
using 聲明指定某個(gè)符號(hào)在某個(gè)作用域下可見(jiàn)。例如:
2.3 using 編譯指令
using 編譯指令指定名字空間中所有符號(hào)在在某個(gè)作用域下可見(jiàn)。
猜你喜歡