C 之命名空間(End Chapter)

2022-03-26 08:55:25 字數 2040 閱讀 6741

今天這一節,注意要講c++中的命名空間和標頭檔案的命名規則。也是c++這一基礎系列的最後一節。首先感謝在學習c++的一路上,有這麼多關注這系列的博友們的陪伴和幫助。正因為有了你們的建議和指導,使我對c++有了更深的認識和更大的興趣。這個系列結束之後,我會繼續學習和關注c++的一些實際應用。

大家都知道乙個大型軟體通常是由多個模組組成的,這些模組往往是由不同的人合作完成,最後組成乙個完整的程式。假如不同的人分別定義了函式和類,放在不同的標頭檔案中,在主檔案需要用到這些函式和類時,用#include命令行將這些標頭檔案包括進來。但由於各個標頭檔案是由不同的人設計的,可能在不同的標頭檔案中會有相同的名字來定義函式或類,這樣就會出現命名衝突的問題。同時如果在程式中用到第三方類庫,也會有同樣的問題。為解決這一問題,ansi/iso c++引入命名空間,即乙個程式設計者命名的記憶體區域。程式設計者根據需要指定命名空間,並將命名空間中宣告的識別符號和命名空間關聯起來,這樣就保證不同命名空間的同名識別符號不發生衝突。它的一般格式:

namespace 命名空間名

識別符號1;

識別符號2;

花括號內是命名空間的作用域。其實在之前所有的章節中都用到過乙個c++指定的乙個標準命名空間std。是否還記得在c++的發展,特點和源程式構成

這一節中的示例裡用到過using namespace std語句,其含義就是使用標準命名空間std。它是單詞standard的縮寫,標準c++庫中的所有識別符號都在這個命名空間中,比如我們常用到的iostream標頭檔案中的函式、類、物件等都在std命名空間中定義。如果要呼叫命名空間裡的函式、類、物件等,有兩種方法:(1)在原檔案中使用"using namespace 命名空間名",再直接呼叫識別符號;(2)在識別符號前面加上命名空間以及作用域運算子"::";

自定義標頭檔案university.h:

1

namespace

peking

//宣告命名空間peking25

6namespace

tsinghua

//宣告命名空間tsinghua

7

使用檔案university.h及命名空間:

1

#include

"stdafx.h"2

#include

<

iostream

>34

#include

"university.h"//

載入標頭檔案university.h

5using

namespace

peking;

//顯式使用標頭檔案university.h中的命名空間peking67

intmain()

8

結果:

最後來說說c++中標頭檔案的命名規則,因為c++是從c語言發展而來的,為了與c相容,c++保留了c語言中的一些規定,其中就包括用.h作為字尾的標頭檔案,比如大家所熟悉的:stdio.h、math.h和string.h等。但後來ansi/iso c++建議標頭檔案不帶字尾".h"。但為了使原來編寫的c++的程式能夠執行,在c++程式中的標頭檔案既可以採用不帶字尾的標頭檔案,也可以採用c語言中帶字尾的標頭檔案。在c++中使用這兩種形式的標頭檔案都可以,只不過有幾個注意點需要說明一下:(1)如果c++程式中使用了帶字尾".h"的標頭檔案,那麼不必在程式中宣告命名空間,只需要檔案中包含標頭檔案即可;(2)c++標準要求系統提供的標頭檔案不帶字尾".h",但為了表示c++與c的標頭檔案既有聯絡又有區別,c++中所用標頭檔案不帶字尾".h",而是在c語言的相應頭檔名之前加上字首c:

1

#include

<

cstdio

>

//等同於c中的#include

2#include

<

cstring

>

//等同於c中的#include

3#include

<

cmath

>

//等同於c中的#include

end

C 之命名空間

c中是沒有命名空間這個概念的,是c 中新引入的乙個東西,為了處理同名的衝突。其實命名空間就是封裝的乙個概念。把一些變數 函式 類給封裝起來。和類的封裝概念很像,但是比類的封裝要大。一 1.自定義定義命名空間 格式 namespacename namespace my 此 的目的就是想往命名空間std...

C 之命名空間

一 命名空間的定義與簡介 命名空間是ansi c 引入的可以由使用者命名的作用域,用來處理程式中常見的命名衝突。例如有兩個標頭檔案中都定義了student類,那麼在主程式中都包含這兩個標頭檔案時,使用student類便會編譯出錯。或者在程式中引入不同的庫時有相同的實體名,則在編譯時就會出現名字衝突。...

c 之命名空間

c語言中所有變數都有自己的作用域,宣告變數的型別不同,其作用域也不同。c語言中的變數,按照作用域的範圍可分為兩種,即區域性變數和全域性變數,所對應的作用域為區域性作用域和全域性作用域。簡單來說 區域性作用域是指 在函式內作定義說明的。其作用域僅限於函式內,離開該函式後再使用這種變數是非法的。全域性作...