1. 程式人生 > >【C++】名稱空間、標準庫和std名稱空間

【C++】名稱空間、標準庫和std名稱空間

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。