C++之名稱空間
阿新 • • 發佈:2018-12-18
大三,初次學習了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;
}