C 之命名空間

2021-08-21 16:40:42 字數 1170 閱讀 1451

命名空間是隨著標準c++而引入的,它相當於乙個更加靈活的檔案域(全域性域),可以用花括號將檔案的一部分括起來,並以關鍵字namespace開頭,給它起乙個名字,這段區域即為命名空間域。

命名空間可巢狀使用。

namespace name1

namespace name2

name1::a = 3;

name2::a = 4;

上面這個例子中,我們定義了兩個命名空間域name1和name2,在不同的命名空間域中定義了乙個名字相同的參量a。在不同的命名空間域中a的值不同。在域的外面想要改變引數值,就要指定想要改變引數所在的域。

名字空間域解決全域性命名衝突的問題。有了名字空間域,就可以在不同的域中定義引數名相同的全域性變數,而且不會引發衝突。

標準c++庫中的所有元件都是在乙個名為std的名字空間中宣告和定義的。在採用標準c++的平台上,使用標準c++庫中的元件,只需要寫乙個using指示符:

using namespace std;
即可直接使用標準c++庫中的所有成員。

除了這種方法,還可以std::成員的方式使用c++庫中的成員。其中::是作用域解析符

我們就拿入門的hello world來舉例:

想要在顯示屏上輸出hello world字串,有以下兩種方式:

#includeusing namespace std;

int main()

printf("%d\n",a);

return 0;

}

不難知道,上面這段**同樣是輸出a的值,但是第一次輸出的a的值為10,第二次為0。這是遵從區域性優先的原則。這個問題很簡單,我們不再贅述。

那麼,在c++中,若定義了重名的全域性變數和區域性變數,想在區域性變數的作用域中列印全域性變數的值,就可以使用域作用限定符::辦到:

#include using namespace std;

int a = 0;

int main(){

int a = 10;

cout執行結果:

C 之命名空間

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

C 之命名空間

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

c 之命名空間

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