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要完成...