C++名稱空間特性
文章轉自微信公眾號:Coder梁(ID:Coder_LT)
一、名稱空間特性
1.嵌套
我們可以將名稱空間聲明進行嵌套:
namespace elements { ? ? namespace fire { ? ? ? ? int flame; ? ? ? ? ... ? ? } ? ? float water; }
我們觀察一下可以發(fā)現(xiàn)這里的flame
位于elements::fire
當中,所以當我們使用解析運算符使用它的時候寫成:elements::fire::flame。
同樣,我們也可以使用using編譯指令引入fire名稱空間:
using namespace elements::fire;
2.傳遞
并且我們還可以把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;
3.別名
我們還可以給名稱空間創(chuàng)建別名,例如:
namespace my = myth::elements::fire; using my::flame;
在上面這個例子當中,我們將別名和名稱空間的嵌套結合在了一起使用。其實有一點像是將名稱空間當成是一種特殊變量處理的感覺。
4.匿名名稱空間
我們還可以省略名稱空間的名稱來創(chuàng)建匿名名稱空間。
namespace { ? ? int ice; ? ? int bandy; }
它相當于后面跟著using
編譯指令一樣,也就是說匿名的名稱空間的潛在作用域為從聲明點到該聲明區(qū)域末尾。從這點來看,它與全局變量相似。但由于它是匿名的,所以無法在其他文件當中使用using
關鍵字引入,所以不能在其他文件使用,某種意義上有些類似于鏈接性為內部的靜態(tài)變量。
到此這篇關于C++名稱空間特性的文章就介紹到這了,更多相關C++名稱空間內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
c++連接mysql數(shù)據(jù)庫的兩種方法(ADO連接和mysql api連接)
現(xiàn)在正做一個接口,通過不同的連接字符串操作不同的數(shù)據(jù)庫。要用到mysql數(shù)據(jù)庫,C++連接mysql有2種方法:利用ADO連接、利用mysql自己的api函數(shù)進行連接,下面看看如何用吧2013-12-12java 出現(xiàn)NullPointerException的原因及解決辦法
這篇文章主要介紹了java 出現(xiàn)NullPointerException的原因及解決辦法的相關資料,這里說明出現(xiàn)NullPointerException 的原因的總結,并說明該如何解決,需要的朋友可以參考下2017-08-08