1. 程式人生 > >C++之名稱空間

C++之名稱空間

大三,初次學習了C++,C++是較C更高階的語言。雖然C++與C語言有很多類似的點,但要精通C++確是一件很費精力的一件事。

以下,就是我對C++自己的理解。有不對的地方,希望大家可以指正。

名稱空間:

為什麼在C++中會有名稱空間呢?

因為C語言中有一些缺陷,在不同的環境下,出現同名的變數或函式。為了解決這類問題,C++中就提出了名稱空間。

目的是對識別符號的名稱進行本地化,來避免命名的衝突。一個名稱空間就定義了一個新的作用域,名稱空間中的所有內容都侷限於該名稱空間中。

同一塊名稱空間中的所有資料都是共有的,即在一個名稱空間時不能出現同名的問題。

  • 怎樣定義名稱空間?

1.名稱空間中可以定義變數,也可以定義函式。

   但是,最好不要在名稱空間中定義函式,因為在程式碼出錯要維護程式碼時,效率會比較低,所以建議使用函式指標這種方式。

namespace N1
{
	int a;
	int b;
	int(*Add)(int, int);
}

int Add(int tmp1,int tmp2)
{
    return tmp1 + tmp2;
}

2.名稱空間的巢狀。

namespace N1
{
	int a;
	int b;
	int Add(int tmp1, int tmp2)
	{
		return tmp1 + tmp2;
	}

	namespace N2
	{
		int Sub(int tmp1, int tmp2)
		{
			return tmp1 - tmp2;
		}
	}
}
  • 如何使用名稱空間中的成員?

1.作用域限定符 ( : : )

int main()
{
	cout<<N1::a;
	system("pause");
	return 0;
}

2.使用using

    using是C++中的一個關鍵字,它有自己的作用域,所以using不能出現在定義作用域之前。

    若在兩個不同的名稱空間中,有同名的變數或函式時,對其操作時,不能重疊使用名稱空間,不然就會不清晰要使用哪個名稱空間中的成員。加上作用域限定符就可以很好地解決這個問題。

using N1::a;
int main()
{
	cout<<a;
	system("pause");
	return 0;
}

3.使用using namespace

using namespace N1;
int main()
{
	int tmp = Add(1, 2);
	cout<<tmp;
	system("pause");
	return 0;
}