當你聲明您正在使用namespace std
,您告訴編譯器可以訪問特定名稱空間內的所有函數和對象,而無需在名稱空間的名稱前加上前綴。
您導入iostream
這實際上只是一個標題。但是在這個頭文件中聲明瞭原型,並且這些文件都是在名稱空間內組織的(在這種情況下爲std
)。
根據C++標準開發庫的不同,文件iostream
的內容可能會有所不同。然而標準庫的實現是...標準。
看看源代碼示例在這裏:GCC - Libstdc++ iostream
您可以在頭中看到,在該namespace std
內聲明的函數:
00043 namespace std _GLIBCXX_VISIBILITY(default)
00044 {
...
00061 extern istream cin; /// Linked to standard input
00062 extern ostream cout; /// Linked to standard output
00063 extern ostream cerr; /// Linked to standard error (unbuffered)
00064 extern ostream clog; /// Linked to standard error (buffered)
...
00067 extern wistream wcin; /// Linked to standard input
00068 extern wostream wcout; /// Linked to standard output
00069 extern wostream wcerr; /// Linked to standard error (unbuffered)
00070 extern wostream wclog; /// Linked to standard error (buffered)
...
注意,有些IDE(Visual Studio和缺點)可能爲您提供語法完成,允許您查看名稱空間或類作用域內的內容。
您可以隨時查看源代碼。 – Charles
C++語言規範中沒有任何內容可以爲您提供這個功能。你將需要查看你正在使用的任何C++編譯器的文檔。也許你的C++編譯器有一些編譯器特定的工具,你可以用它來獲取這些信息。 –
可用於列出命名空間中的內容的唯一真正工具是該命名空間中內容的文檔。對於命名空間'std',該文檔處於標準(跨越數百頁)和各種參考文檔,可以在線獲取。由於命名空間可以跨多個編譯單元(和頭文件)進行聲明,因此編譯器可能無法識別命名空間中的所有內容。 – Peter