C++編程時幾乎每次都敲上using namespace std;但這行代碼究竟有什么作用呢?
C++標准程序庫中的所有標識符都被定義於一個名為std的namespace中。
早些的編碼將標准庫功能定義在全局空間里(所以並不需要注明使用什么命名空間),聲明在帶.h后綴的頭文件里。C++標准為了和C區別開,也為了正確地使用命名空間,規定頭文件不使用后綴.h。因此,當使用<iostream.h>時,相當於在C中調用庫函數,使用的是全局命名空間,也就是早期的C++實現。當使用<iostream>時,該頭文件沒有定義全局命名空間,必須使用namespace std,指明在哪里的命名空間,這樣才能使用類似於cout這樣的C++標識符。
由於namespace的概念,使用C++標准程序庫的任何標識符時,可以有三種選擇:
直接指定標識符
例如:
std::iostream而不是iostream。完整語句如下: std::cout << std::hex << 3.4 << std::endl;
使用using關鍵字
例如:
using std::cout; using std::endl; using std::cin; 以上程序可以寫成如下代碼:
using std::cout <<using std::hex << 3.4 <<using std:: endl;
使用using namespace std
例如:
#include<iostream>
#include<sstream>
#include<string>
using namespace std;
這樣命名空間std內定義的所有標識符都有效(曝光)。就好像它們被聲明為全局變量一樣。
