C 命名空間 預設命名空間與匿名命名空間

2021-10-14 13:02:26 字數 1211 閱讀 8459

2.匿名命名空間

預設命名空間也叫全域性命名空間,所有沒有置於某一具體命名空間下的**即在預設命名空間下,例如func(),main()函式。

#include

void

func

(void);

intmain

(int argc,

char

**ar**)

void

func

(void

)

需要注意的是:

這個就是類似於c語言裡簡單的沒有命名空間的函式呼叫,如下面的**中main()呼叫func1()

#include

void

func1

(void);

intmain

(int argc,

char

**ar**)

void

func1

(void

)

其他命名空間引用預設命名空間同樣使用::,但是前面命名空間的名字是空白的,例如下面的**中命名空間ns引用預設命名空間下的func()

#include

void

func1

(void);

namespace ns

}int

main

(int argc,

char

**ar**)

void

func1

(void

)

匿名命名空間和全域性命名空間有些類似,他們都沒有名字,但是全域性命名空間不需要自己定義,而匿名命名空間需要自己去定義,方法就是namespace後面沒有空間名,直接就是{}

namespace

}

直接用,無需新增命名空間名字首,只要確保先宣告後使用的順序就沒有問題。

一般匿名命名空間定義於檔案前面,類似於全域性函式位置,之後的命名空間可以正常訪問匿名命名空間中的內容,但是匿名命名空間的作用不在於此,而是在於跨檔案訪問的時候。因此其實對於單個檔案內部,使用匿名命名空間與全域性函式並無多大差別。

C 匿名命名空間

當定義乙個命名空間時,可以忽略這個命名空間的名稱 namespce 編譯器在內部會為這個命名空間生成乙個唯一的名字,而且還會為這個匿名的命名空間生成一條using指令。所以上面的 在效果上等同於 namespace unique name using namespace unique name 在匿...

C 中的namespace命名空間和匿名命名空間

namespace叫命名空間,用於解決函式 變數重名的問題,如果乙個函式 變數被宣告在命名空間中,那麼使用他們的時候需要加上作用域 namespace foo cout 除了加上作用域,還可以使用using關鍵字來預設指定命名空間 namespace foo using namespace foo ...

C 過載 預設 命名空間

剛學習c 入門階段對過載 預設 命名空間的理解 c幾乎是c 的乙個子集,所以c語言支援的語法在c 基本都支援並需要使 用。c plus plus c 所以在c的基礎上又有了很多新的特性 過載 下面看兩組函式,分別是用c和c 寫的列印函式,分別列印 int 型 char 型 string 型 c要完成...