namespace

這是一篇譯文原文地址
有時(shí)你的代碼中可能會(huì)有一個(gè)叫做xyz()的函數(shù)上祈,而另一個(gè)庫(kù)中也有一個(gè)相同的xyz()函數(shù)苔可。此時(shí)編譯器無(wú)法確定你使用的是哪一個(gè)版本的xyz()
命名空間用來(lái)克服這個(gè)困難并且它作為額外信息來(lái)區(qū)分不同庫(kù)中的相同名字糖驴,比如相同的函數(shù)名蜘欲,類(lèi)名章姓,變量等啥刻。使用命名空間你可以定義參數(shù)在哪個(gè)命名中被定義秃殉。本質(zhì)上一個(gè)命名空間定義了一個(gè)范圍坝初。

  • 定義一個(gè)命名空間
    命名空間以 namespace開(kāi)始,后面緊跟著命名空間的名字复濒,如下所示
namespace namespace_name{
    // code declarations
}
  • 調(diào)用命名空間中使能的函數(shù)或者變量脖卖,如下所示應(yīng)該先考慮命名空間的名字
#include <iostream>
using namespace std;//下面再解釋這個(gè)用法
// first name space
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// second name space
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
int main () {

   // Calls function from first name space.
   first_space::func();  

   // Calls function from second name space.
   second_space::func(); 

   // Calls variable from first name space.
    cout << first_space::space << endl;   

   // Calls variable from second name space.
    cout << second_space::space << endl;

   return 0;
}
  • 使用指令
    你也可以通過(guò)直接使用using namespace來(lái)避免每次調(diào)用都要加上命名空間。這個(gè)指令告訴編譯器隨后的代碼使用指定命名空間中的命名巧颈,此時(shí)如下所示
// first name space
namespace first_space{
    int space = 1;
    void func(){
        cout << "Inside first_space" << endl;
    }
}
// second name space
namespace second_space{
    int space = 2;
    void func(){
        cout << "Inside second_space" << endl;
    }
}
using namespace first_space;
int main () {
    
    // Calls function from specified name space.
    func();

    return 0;
}

使用指令也可以用來(lái)指定命名空間中特殊的項(xiàng)畦木,例如std namespace中你只想使用cout你可以這樣指定它:using std::cout
隨后的代碼不用再加上命名空間就可以指定cout,但是std中的其它項(xiàng)還是需要明顯的加上std命名空間

#include <iostream>
using std::cout;
int main () {  
   
    cout << "std::endl is used with std!" << std::endl;
    
    return 0;
}
  • 不連續(xù)的命名空間定義
    一個(gè)命名空間可以被定義在不同的地方,因此一個(gè)命名空間是分開(kāi)定義地方的總和砸泛,分開(kāi)的部分可以在不同的文件中十籍。
    如果命名空間的一部分需要使用在另一個(gè)文件定義的一個(gè)名字,這個(gè)名字也需要被聲明唇礁,寫(xiě)一個(gè)下面的命名空間勾栗,要么定義一個(gè)新的命名空間要么在已有中增加元素
namespace namespace_name {
    // code declarations
}
  • 嵌套命名空間
    命名空間是可以嵌套的,你可以在一個(gè)命名空間中定義另一個(gè)命名空間
namespace namespace_name1 {
    // code declarations
    namespace namespace_name2 {
        // code declarations
    }
}

你可以使用結(jié)果操作符來(lái)獲得嵌套的命名空間

// to access members of namespace_name2
using namespace namespace_name1::namespace_name2;
// to access members of namespace:name1
using namespace namespace_name1;

在以上語(yǔ)句中當(dāng)你使用namespace_name1盏筐,namespace_name2中的元素也可以使用

#include <iostream>
using namespace std;
// first name space
namespace first_space{
    void func(){
        cout << "Inside first_space" << endl;
    }
    
    // second name space
    namespace second_space{
        void func(){
            cout << "Inside second_space" << endl;
        }
    }
}
using namespace first_space::second_space;
int main () {
    
    // This calls function from second name space.
    func();
    
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末围俘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌界牡,老刑警劉巖簿寂,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宿亡,居然都是意外死亡常遂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)挽荠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)克胳,“玉大人,你說(shuō)我怎么就攤上這事圈匆∧恚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵臭脓,是天一觀的道長(zhǎng)酗钞。 經(jīng)常有香客問(wèn)我,道長(zhǎng)来累,這世上最難降的妖魔是什么砚作? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮嘹锁,結(jié)果婚禮上葫录,老公的妹妹穿的比我還像新娘。我一直安慰自己领猾,他們只是感情好米同,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著摔竿,像睡著了一般面粮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上继低,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天熬苍,我揣著相機(jī)與錄音,去河邊找鬼袁翁。 笑死柴底,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粱胜。 我是一名探鬼主播柄驻,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼焙压!你這毒婦竟也來(lái)了鸿脓?” 一聲冷哼從身側(cè)響起抑钟,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎野哭,沒(méi)想到半個(gè)月后味赃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡虐拓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了傲武。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓉驹。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖揪利,靈堂內(nèi)的尸體忽然破棺而出态兴,到底是詐尸還是另有隱情,我是刑警寧澤疟位,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布瞻润,位于F島的核電站,受9級(jí)特大地震影響甜刻,放射性物質(zhì)發(fā)生泄漏绍撞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一得院、第九天 我趴在偏房一處隱蔽的房頂上張望傻铣。 院中可真熱鬧,春花似錦祥绞、人聲如沸非洲。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)两踏。三九已至,卻和暖如春兜喻,著一層夾襖步出監(jiān)牢的瞬間梦染,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工虹统, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弓坞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓车荔,卻偏偏與公主長(zhǎng)得像渡冻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子忧便,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容