}
),但在函式之外無效。
|
|
|
|
|
|
inner block: x: 50 y: 50 outer block: x: 10 y: 50 |
y
在內部塊中沒有被隱藏,因此訪問 y
仍然是訪問外部變數。namespace identifier { named_entities } |
identifier
是任何有效的識別符號,而 named_entities
是包含在名稱空間內的一組變數、型別和函式。例如:
|
|
a
和 b
是在名為 myNamespace
的名稱空間內宣告的普通變數。a
或 b
)訪問,但如果從 myNamespace
名稱空間外部訪問,則必須使用作用域解析運算子 ::
進行適當的限定。例如,要從 myNamespace
外部訪問前面的變數,它們應被限定為:
|
|
|
|
5 6.2832 3.1416 |
value
。一個在名稱空間 foo
中定義,另一個在 bar
中定義。由於名稱空間的存在,沒有發生重定義錯誤。另請注意,pi
在名稱空間 bar
內部以非限定方式訪問(直接用 pi
),而在 main
函式中再次訪問時,則需要將其限定為 bar::pi
。
|
|
a
和 c
在名稱空間 foo
中,而 b
在名稱空間 bar
中。名稱空間甚至可以跨越不同的翻譯單元(即,跨越不同的原始碼檔案)。using
將一個名稱引入到當前的宣告區域(例如一個塊),從而避免了對該名稱進行限定的需要。例如:
|
|
5 2.7183 10 3.1416 |
main
函式中,變數 x
(沒有任何名稱限定符)指向 first::x
,而 y
指向 second::y
,這正是 using
宣告所指定的。變數 first::y
和 second::x
仍然可以被訪問,但需要使用完全限定的名稱。using
也可以用作指令來引入整個名稱空間:
|
|
5 10 3.1416 2.7183 |
first
,所有不帶名稱限定符直接使用的 x
和 y
也會在名稱空間 first
中查詢。using
和 using namespace
僅在其宣告所在的塊中有效,或者如果它們直接在全域性作用域中使用,則在整個原始檔中有效。例如,可以透過將程式碼分割到不同的塊中,先使用一個名稱空間的物件,然後再使用另一個名稱空間的物件:
|
|
5 3.1416 |
namespace new_name = current_name;
std
名稱空間中宣告。實際上,這些教程中的大多數示例都包含了以下這行程式碼:
|
|
std
名稱空間中的所有名稱在程式碼中可以直接訪問。在這些教程中這樣做是為了方便理解並縮短示例的長度,但許多程式設計師更喜歡在他們的程式中為每個使用的標準庫元素進行限定。例如, вместо
|
|
|
|
std
名稱空間中的元素是透過 using
宣告引入,還是在每次使用時都進行完全限定,都不會以任何方式改變最終程式的行為或效率。這主要是一個風格偏好問題,儘管對於混合使用多個庫的專案,顯式限定通常是首選。
|
|
0 4285838 |
x
的值保證為零。y
實際上可以包含任何值(包括零)。![]() 過載與模板 | ![]() 目錄 | ![]() 陣列 |