所謂namespace,是指標識符的可見范圍。C++標准庫中的所有標識符都被定義在一個名為 std 的namespace 中。
1、當使用<iostream.h>時,相當於在 c 中調用庫函數,使用的是全局命名空間,也就是早期的C++實現;
2、當使用<iostream>時,該頭文件沒有定義全局命名空間,必須使用 namespace std ; 這樣才能夠正確的使用 cout ;
二、 由於namespace的概念,使用C++標准庫中的標識符時,有以下三種方式:
1、直接在標識符前加上命名空間std : 例如 std :: << cout << std :: hex << 3.1415 << std :: endl ;
2、用 using 關鍵字指定部分標識符的命名空間:using std :: cout ; using std :: endl ; 那么1中的語句可以改寫為 cout << std :: hex << 3.1415 << endl ;
3、最方便的就是使用 using namespace std ; 讓命名空間 std 內的所有標識符都有效 。好像把他聲明成全局函數一樣,這樣上面的代碼就可以寫成 cout << hex << 3.1415 << endl ;
三、命名空間的定義
namespace name { ... } ;
四、命名空間的使用
#include <iostream> using namespace std; namespace namespaceA { int a = 0 ; namespace namespaceD { int b; } } namespace namespaceB { int a = 0 ; namespace namespaceC { int b; } } int main() { using namespace namespaceA; using namespace namespaceB; cout << a << endl; }
這樣編譯,會報錯,提示你 a 的命名空間不明確,改成以下即可正確運行:
cout << namespaceA :: a << end ;
cout << namespaceB :: a << end ;
注意,namespace的定義可以嵌套,比如要訪問 namespaceC 中的 b 可以這樣寫
using namespace namespaceB::namespaceC; cout << b << endl ; //這樣就可以訪問 namespaceC 中的 b 了;