【C++】名稱空間、標準庫和std名稱空間
阿新 • • 發佈:2018-12-05
namespace Li { int a = 10; int Sum(int a,int b) { std::cout<<"Li::Sum: "<<std::endl; return a + b; } } namespace Wang { int Sum(int a, int b) { std::cout<<"Wang::Sum: "<<std::endl; return a + b; } } int main() { using Li::Sum;//宣告 //using namespace Li;//using 指示符 Sum(10,20); Wang::Sum(10,30); return 0; }
- C++名稱空間
在解決合作開發時的命名衝突問題時,C++引入了名稱空間(Namespace)。這樣在後期合併程式碼編譯時就不會出現問題。(同名空間作用域會合並)
namespace 的語法格式如下:
可以這樣呼叫:
除了直接使用域解析操作符,還可以使用using宣告,如下:
using 宣告還可用於整個名稱空間
二、C++標準庫和std名稱空間
在舊的 C++ 標頭檔案,如 iostream.h、fstream.h 等將會繼續被支援,儘管它們不在官方標準中。這些標頭檔案的內容不在名稱空間 std 中。而在新的 C++ 標頭檔案,如 iostream、fstream 等包含的基本功能和對應的舊版標頭檔案相似,但標頭檔案的內容在名稱空間 std 中。
標準C標頭檔案如 stdio.h、stdlib.h 等繼續被支援。標頭檔案的內容不在 std 中。具有C庫功能的新C++標頭檔案具有如 cstdio、cstdlib 這樣的名字。它們提供的內容和相應的舊的C標頭檔案相同,只是內容在 std 中。
#include <iostream> //宣告名稱空間std using namespace std; void func() { cout<<"World!"<<endl; } int main() { cout<<"Hello"<<endl; func(); return 0; }
在我們學習中經常將 std 直接宣告在所有函式外部,這樣雖然使用方便,但卻不被推薦的,這樣會增加了命名衝突的風險,所以最好在函式內部宣告 std。