共用方式為


命名空間 (C++)

C + + 語言提供單一的全域命名空間。 這可能會造成與全域名稱衝突的問題。 舉個例說,請參考這兩個的 C++ 標頭檔:

char func(char);
class String { ... };

// somelib.h
class String { ... };

這些定義,就無法使用單一的程式 ; 在這兩個標頭檔 String類別將會衝突。

命名空間是在其中宣告的名稱附加其他的識別項的宣告式區域。 其他的識別項,比較不容易名稱會與程式中其他位置宣告的名稱衝突。 很可能使用相同的名稱,在不同的命名空間,而不發生衝突,即使名稱會出現在同一個轉譯單位中。 只要它們出現在不同的命名空間中,每個名稱將是唯一因加入的命名空間識別項。 例如:

namespace one {
   char func(char);
   class String { ... };
}

// somelib.h
namespace SomeLib {
   class String { ... };
}

現在的類別名稱會不衝突,因為它們會變得one::String和SomeLib::String,分別。

C + + 不允許複合命名空間的名稱。

// pluslang_namespace.cpp
// compile with: /c
// OK
namespace a {
   namespace b {
      int i;
   }
}

// not allowed
namespace c::d {   // C2653
   int i;
}

在檔案範圍內的宣告轉譯單位,所有的命名空間以外的仍是全域命名空間的成員。

您還想知道關於哪些方面的詳細資訊?

請參閱

參考

宣告