EasyC++,名稱空間其他特性
大家好,我是梁唐。
想要追求更好閱讀體驗的同學,可以點擊「閱讀原文」訪問github倉庫。
名稱空間其他特性
嵌套
我們可以將名稱空間聲明進行嵌套:
- namespace elements {
- namespace fire {
- int flame;
- ...
- }
- float water;
- }
我們觀察一下可以發現這里的flame位于elements::fire當中,所以當我們使用解析運算符使用它的時候寫成:elements::fire::flame。
同樣,我們也可以使用using編譯指令引入fire名稱空間:
- using namespace elements::fire;
傳遞
并且我們還可以把using編譯指令和using聲明應用在名稱空間當中:
- namespace myth {
- using Jill::fetch;
- using namespace elements;
- using std::cout;
- using std::cin;
- }
假設我們要訪問Jill::fetch,由于它已經被引入myth當中了,所以我們可以這樣訪問:
- std::cin >> myth::fetch;
并且using編譯指令是可以傳遞的,A 引入了B,B引入了C,等價于A也引入了C。比如當我們運行using namespace myth;,由于myth當中引入了elements,等價于同時運行了這兩條:
- using namespace myth;
- using namespace elements;
別名
我們還可以給名稱空間創建別名,例如:
- namespace my = myth::elements::fire;
- using my::flame;
在上面這個例子當中,我們將別名和名稱空間的嵌套結合在了一起使用。其實有一點像是將名稱空間當成是一種特殊變量處理的感覺。
匿名名稱空間
我們還可以省略名稱空間的名稱來創建匿名名稱空間。
- namespace {
- int ice;
- int bandy;
- }
它相當于后面跟著using編譯指令一樣,也就是說匿名的名稱空間的潛在作用域為從聲明點到該聲明區域末尾。從這點來看,它與全局變量相似。但由于它是匿名的,所以無法在其他文件當中使用using關鍵字引入,所以不能在其他文件使用,某種意義上有些類似于鏈接性為內部的靜態變量。



















