教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

C++ namespace用法詳細(xì)介紹[C++培訓(xùn)]

更新時(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 可包含的成員

1585623921298_namespace01.jpg

1.2 namespace 只能在全局定義

1585623931907_namespace02.jpg

1.3 namespace 支持嵌套定義

1585623942858_namespace03.jpg

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

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

1585623963003_namespace04.jpg

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

1585623975814_namespace05.jpg

1.6 namespace 匿名名字空間

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

1585623987342_namespace06.jpg


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)

1585624001618_namespace07.jpg


2.2 using 聲明

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

1585624015664_namespace07.5.jpg

2.3 using 編譯指令

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

1585624026459_namespace08.jpg


猜你喜歡
C與C++的枚舉的不同
C語(yǔ)言二維數(shù)組的定義和引用
C/C++函數(shù)指針簡(jiǎn)單講解
C++中指針和應(yīng)用有哪些區(qū)別?

0 分享到:
和我們?cè)诰€(xiàn)交談!