C 命名空間 namespace 詳解

2021-10-02 19:56:13 字數 1561 閱讀 9238

考慮一種情況,當我們有兩個同名的人,zara,在同乙個班裡。當我們需要對它們進行區分我們必須使用一些額外的資訊和它們的名字,比如這個區域,如果它們生活在不同的區域或者它們的母親或父親的名字,等等。

在您的c++應用程式中也會出現同樣的情況。例如,您可能正在編寫一些具有名為xyz()函式的**,並且還有另乙個可用的庫,它也具有相同的xyz()函式。現在編譯器無法知道您在**中引用的xyz()函式的哪個版本。

命名空間(namespace)被設計來克服這個困難,並被用作額外的資訊來區分類似的函式、類、變數等等,它們在不同的庫中具有相同的名稱。使用命名空間,您可以定義定義名稱的上下文。本質上,命名空間定義了乙個範圍。

在c語言中只有乙個全域性作用域:

1.c語言中所有的全域性識別符號共享乙個作用域

2.識別符號之間可能發生衝突

c++中提出了命名空間的概念:

1.命名空間將全域性作用域分成不同的部分,

2.不同命名空間中的識別符號可以同名而不會發生衝突

3.命名空間可以發生巢狀

4.全域性作用域也叫預設命名空間

語法:

namespace name

/*...*/

}

c++命名空間的使用:

使用整個命名空間:using namespace name;

使用命名空間中的變數:using name::variable

使用預設命名空間中的變數: ::variable

example:

#include #include namespace first 

namespace second; }

} int main();

**printf("p.x = %d\n", p.x);

printf("p.y = %d\n", p.y);**

system("pause");

return 0;

}

編譯執行,輸出結果:

三、using指令

可以使用using namespace指令避免使用命名空間前置。該指令告訴編譯器後續**正在使用指定命名空間中的名稱。

example:

#include using namespace std;

// first name space

namespace first_space }

// second name space

namespace second_space }

using namespace first_space;

int main ()

下列**可以引用cout而不預先新增命名空間:

#include using std::cout;

int main ()

C 命名空間namespace

在c 中,名稱 name 可以是符號常量 變數 巨集 函式 結構 列舉 類和物件等等。為了避免,在大規模程式的設計中,以及在程式設計師使用各種各樣的c 庫時,這些識別符號的命名發生衝突,標準c 引入了關鍵字namespace 命名空間 名字空間 命名空間 名域 可以更好地控制識別符號的作用域。mfc...

C 命名空間 (Namespace)

命名空間的設計目的是提供一種讓一組名稱與其他名稱分隔開的方式。在乙個命名空間中宣告的類的名稱與另乙個命名空間中宣告的相同的類的名稱不衝突。命名空間的定義是以關鍵字 namespace 開始,後跟命名空間的名稱,如下所示 csharp view plain copy namespace namespa...

C 命名空間(Namespace)

命名空間的設計目的是提供一種讓一組名稱與其他名稱分隔開的方式。在乙個命名空間中宣告的類的名稱與另乙個命名空間中宣告的相同的類的名稱不衝突。命名空間的定義是以關鍵字namespace開始,後跟命名空間的名稱,如下所示 namespace namespace name 為了呼叫支援命名空間版本的函式或變...