namespace 宣告
namespace 宣告會識別並指派唯一的名稱給使用者宣告的命名空間。
namespace identifier
備註
這類命名空間在大型程式和程式庫中可用來解決名稱衝突的問題。 程式設計人員可以使用命名空間來開發新軟體元件和程式庫,而不會造成與現有元件的命名衝突。
例如:
// namespace_declaration1.cpp
namespace X
{
int i;
double j;
}
int main()
{
X::i++;
}
命名空間定義的語法為:
namespace identifier
{
[ declaration-list ]
}
namespace-definition 可以在另一個 namespace-definition 中以巢狀方式放置。 每個 namespace-definition 必須出現在檔案範圍,或立即出現在其他 namespace-definition 中。
例如:
// namespace_declaration2.cpp
// C2870 expected
namespace A
{
int j = 3;
int f(int k);
}
namespace Outer
{
int n = 6;
int func(int num);
namespace Inner
{
float f = 9.993;
}
}
int main()
{
namespace local // C2870: not at global scope
{
}
}
不同於其他宣告區域,命名空間的定義可以在單一轉譯單位中分割為幾個部分。
// namespace_declaration3.cpp
namespace A
{
// declare namespace A variables
int i;
int j;
}
namespace B
{
}
namespace A
{
// declare namespace A functions
void func(void);
int int_func(int i);
}
int main()
{
}
以這種方式在其初始定義後繼續使用命名空間時,接下來會呼叫「擴充命名空間定義」。該命名空間的原始定義稱為基本「原始命名空間定義」。
使用這個標記法對於較長的名稱或大型程式可能會相當麻煩。 使用宣告、使用指示詞和命名空間別名提供更直接的方式參考命名空間的成員。
namespace 宣告 (其中包含新的命名空間、未命名的命名空間或擴充的命名空間定義) 必須使用大括號括住命名空間主體。 陳述式
namespace X;
為錯誤的語法。 陳述式
namespace X{};
語法沒有錯誤,但沒有意義。
如需背景資訊,請參閱命名空間。
原始命名空間定義中的識別項在使用它的宣告區域中必須是唯一的。 識別項是命名空間的名稱,用來參考它的成員。
命名空間定義的宣告區域即是它的主體。 主題必須使用大括號 ({}) 括住,其中可能包含變數、函式、物件、範本及巢狀命名空間的宣告或定義。 declaration-list 中的宣告會是命名空間的成員。 每個命名空間成員的名稱會自動限定其命名空間的名稱,以及範圍解析運算子。