using namespace std;
所有C++ Standard Library中的class(例如string、map、ifstream)都屬於std這個namespace下。當你要在自己的程式內使用它們時,便需要在前方加上std::,例如std::string。但如果使用了上述那句的話,便不需要加上std::,而是讓compiler自動幫你加。
只不過這樣做的缺點就是當你自己有class和C++ Standard Library中的任何一個class撞名,compiler便可能會選錯namespace,又或者直接顯示ambigious的錯誤。解決這問題的方法主要有兩個:
- 盡量在.cpp中加入這一句,而非.h,因為header file很容易被其他文件include,讓缺點擴散(?)
- 指定某些class使用std namespace,而非一刀切全部用std。代碼如下:
using std::string; using std::cout; using std::ifstream;