首頁技術(shù)文章正文

C++ 命名空間的使用規(guī)則詳細(xì)介紹

更新時(shí)間:2020-03-31 來源:黑馬程序員 瀏覽量:

編寫程序過程中,名稱(name)可以是符號(hào)常量、變量、函數(shù)、結(jié)構(gòu)、枚舉、類和對(duì)象等等。工程越大,名稱互相沖突性的可能性越大。另外使用多個(gè)廠商的類庫時(shí),也可能導(dǎo)致名稱沖突。為了避免,在大規(guī)模程序的設(shè)計(jì)中,以及在程序員使用各種各樣的 C++ 庫時(shí),這些標(biāo)識(shí)符的命名發(fā)生沖突,標(biāo)準(zhǔn) C++ 引入關(guān)鍵字 namespace(命名空間/名字空間/名稱空間),可以更好地控制標(biāo)識(shí)符的作用域。推薦了解黑馬程序員C++工程師培訓(xùn)課程

例如,我們?cè)?C 語言中,通過 static 可以限制名字只在當(dāng)前編譯單元內(nèi)可見,在 C++ 中我們通過 namespace 來控制對(duì)名字的訪問。

1. namespace 語法

1. namespace 中可定義常量、變量、函數(shù)、結(jié)構(gòu)體、枚舉、類等

2. namespace 只能在全局定義。

3. namespace 支持嵌套定義。

4. namespace 是開放的,可隨時(shí)添加新的成員。

5. namespace 關(guān)鍵字可以為已有空間名字增加別名

6. 無名命名空間意味著命名空間中的符號(hào)只能在本文件中訪問,相當(dāng)于給符號(hào)增加了 static 修飾。推薦了解

1.1 namespace 可包含的成員

1585623921298_namespace01.jpg

1.2 namespace 只能在全局定義

1585623931907_namespace02.jpg

1.3 namespace 支持嵌套定義

1585623942858_namespace03.jpg

名字空間 my_space 中可以嵌套定義子名字空間 my_sub_space.

1.4 namespace 是開放的,隨時(shí)可添加成員

1585623963003_namespace04.jpg


1.5 namespace 為已有空間名字創(chuàng)建別名

1585623975814_namespace05.jpg


1.6 namespace 匿名名字空間

無名命名空間意味著命名空間中的符號(hào)只能在本文件中訪問,相當(dāng)于給符號(hào)增加了 static 修飾,只能在當(dāng)前文件內(nèi)訪問。

1585623987342_namespace06.jpg


2. 使用 namespace 中符號(hào)

使用名字空間中定義的符號(hào)有三種方式:

1. 直接通過 namespace 作用域訪問

2. using 聲明指定某個(gè)符號(hào)在某個(gè)作用域下可見

3. using 編譯指令指定名字空間中所有符號(hào)在在某個(gè)作用域下可見

2.1 直接訪問

1585624001618_namespace07.jpg



2.2 using 聲明

using 聲明指定某個(gè)符號(hào)在某個(gè)作用域下可見。例如:

1585624015664_namespace07.5.jpg

2.3 using 編譯指令

using 編譯指令指定名字空間中所有符號(hào)在在某個(gè)作用域下可見。

1585624026459_namespace08.jpg


猜你喜歡

C與C++的枚舉的不同


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!