C 命名空間學習筆記

2021-09-12 17:51:10 字數 1465 閱讀 3166

三個重要概念

宣告區域:可以在其中進行宣告(變數、函式等)的區域。

潛在作用區域:從宣告點開始,至其宣告區域的結尾。

作用域:變數對程式而言的可見的範圍。

舉個例子:函式中的某個變數可能會被這個函式中的某個**塊中的同名變數隱藏。

作用:乙個命名空間中的名稱不會與另乙個命名空間中的相同名稱發生衝突,同時允許程式的其他部分使用該命名空間中宣告的東西。

注意

using宣告:例子:using std::cout;using編譯指令:例子:using namespace std;
前者可以使指定的識別符號可用,後者使整個命名空間可用。

兩者都增加了名稱衝突的可能性

using編譯指令不同於using宣告的地方是:前者匯入的名稱可能會被後面定義的「區域性名稱」所隱藏,這種情況與 「區域性變數隱藏全域性變數」 的方式類似,使用::可以解決這個問題。

補充:

命名空間的名稱可以被省略(未命名的命名空間),這種命名空間中的名稱不能在其所屬檔案之外被引用。

/**

* 用於測試未命名的命名空間

* 目的是知道如何使用其中的變數

* */

#include

// using 宣告

using std::cout;

using std::endl;

// 未命名的命名空間

namespace

intmain()

$ g++ namespace_test.cpp -o exe && ./exe

unnamednamespace: 10

unnamednamespace: 20

unnamednamespace: 15

C 學習筆記 命名空間

命名空間或者叫名字空間 名字就是namespace 是為了在大型專案中防止識別符號衝突才引入的,實際上就是可以由使用者命名的作用域。touzani的專欄的這篇c 命名空間namespace,我覺得寫的很明白 不敢說好壞,因為我也是抱著學習的態度讀技術部落格 該部分大量參考了這篇博文。原來c 識別符號...

C 學習筆記 命名空間

c 包含在全域性命名空間中,使用namespace關鍵字為花括號中的 塊顯示定義命名空間。限定名稱 包含全部的分層資訊。乙個命名空間的 引用另乙個命名空間中定義的名稱,則必須包括該命名空間的引用。舉例 namespace levelone code in global namespace 全域性命名...

C 學習筆記 三十六 命名空間

在 c 應用程式中。例如,您可能會寫乙個名為 xyz 的函式,在另乙個可用的庫中也存在乙個相同的函式 xyz 這樣,編譯器就無法判斷您所使用的是哪乙個 xyz 函式。因此,引入了命名空間這個概念,專門用於解決上面的問題,它可作為附加資訊來區分不同庫中相同名稱的函式 類 變數等。使用了命名空間即定義了...