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