在c++中怎麼建立名稱空間
阿新 • • 發佈:2019-01-04
什麼是名稱空間呢?舉一個現實中的例子,名稱空間就像是一個企業,每個企業都有自己的員工。在這裡假設每一個員工代表一個類,於是每一個名稱空間中都包含若干個類。優於名稱空間不同,編譯器就可以將同名的類區別開來。這就像企業A中有個叫“張三”,企業B也有個叫“張三”的。但是由於兩個企業不同,人們還是可以把兩個人區分開來。
使用名稱空間的方式有以下三種:
方法一:
#include"iostream" namespace hehe { using std::endl; using std::cout; void fun() { cout << "fun in hehe" << endl; } } int main() { using namespace hehe; fun(); return 0; }
輸出結果如下:
fun in hehe
請按任意鍵繼續. . .
方法二:
輸出結果如下:#include"iostream" namespace hehe { using std::endl; using std::cout; void fun() { cout << "fun in hehe" << endl; } class X{ public: static void fun() { cout << "fun in hehe::X" << endl; } }; } int main() { using namespace hehe; hehe::fun(); hehe::X::fun(); return 0; }
fun in hehe
fun in hehe::X
請按任意鍵繼續. . .
方法三:
輸出結果如下:#include"iostream" namespace hehe { using std::endl; using std::cout; void fun() { cout << "fun in hehe" << endl; } } namespace hoho { using std::endl; using std::cout; void fun() { cout << "fun in hoho" << endl; } } int main() { using namespace hehe; using hoho::fun; hehe::fun(); fun(); return 0; }
fun in hehe
fun in hoho
請按任意鍵繼續. . .
對以上三種方法進行對比,可以得出一下結果:
①如方法一所示,使用using語句開啟名稱空間後,在後面的程式中,程式設計師不用再次輸入名稱空間的名字,但是使用using開啟名稱空間後,後面的名稱空間講預設為現有的名稱空間,這樣其他名稱空間中同名的函式便不能直接使用,除非使用作用域識別符號,負責會產生編譯錯誤。
②方法二中使用作用域識別符號開啟名稱空間的好處是,被開啟的名稱空間將不會對程式現有的名稱空間造成任何影響。但是程式設計師每次要輸入名稱空間的名字,當名稱空間名字很長時將會影響程式的可讀性。
③方法三中使用申明語句似乎是前面兩種方法的折中,既不需要輸入較長的名稱空間名,又不會對現有的名稱空間造成影響。但是也有致命的缺點,即程式設計師必須記住所設申明的名稱空間的名字,一旦忘記,後果不堪設想。
名稱空間的增補操作如下:
#include"iostream"
namespace hehe
{
using std::endl;
using std::cout;
void fun1()
{
cout << "fun1 in hehe" << endl;
}
}
namespace hehe{
void fun2()
{
cout << "fun2 in hehe" << endl;
}
}
int main()
{
using namespace hehe;
fun1();
fun2();
return 0;
}
輸出結果如下:
fun1 in hehe
fun2 in hehe
請按任意鍵繼續. . .
有的名稱空間名字比較長,也可以使用如下語句講名字空間的名字改變:
namespace h=hehe;