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