乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      關(guān)于“using namespace std”

       My鏡像站 2011-12-26
      對(duì)于一個(gè)存在著標(biāo)準(zhǔn)輸入輸出的C++控制臺(tái)程序,一般會(huì)在#include <iostream>的下一行發(fā)現(xiàn)一句話,using namespace std。這句話其實(shí)就表示了所有的標(biāo)準(zhǔn)庫(kù)函數(shù)都在標(biāo)準(zhǔn)命名空間std中進(jìn)行了定義。其作用就在于避免發(fā)生重命名的問題。
        1. 關(guān)于namespace
        C++引入了命名空間namespace主要解決了多個(gè)程序員在編寫同一個(gè)項(xiàng)目中可能出現(xiàn)的函數(shù)等重名的現(xiàn)象。解決方法就是加上自己的命名空間。比如下面的例子:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      #include <iostream>
      using namespace std;
       
      namespace ZhangSan
      {
          int a=10; //張三把10賦值給了變量a
      }
      namespace LiSi
      {
          int a=5; //李四把10賦值給了變量a
      }
       
      void main()
      {
          int a=1;
          cout<<"張三定義的a="<<ZhangSan::a<<endl;
          cout<<"李四定義的a="<<LiSi::a<<endl;
          cout<<"主函數(shù)定義的a="<<a<<endl;   
      }
        上例中的“ZhangSan::a”和“LiSi::a”分別表示了調(diào)用張三命名空間中的a變量和李四命名空間中的a變量。這樣的好處顯而易見,那就是雖然張三和李四這兩個(gè)程序員都定義了一個(gè)變量a,但是并不會(huì)出現(xiàn)重名的危險(xiǎn)。
      運(yùn)行結(jié)果為:
       
        
        2. 關(guān)于using namespace *
        顧名思義,using namespace * 就表示釋放命名空間* 中間的東西。好處在于我們?cè)诔绦蚶锩婢筒挥迷诿總€(gè)函數(shù)的頭上都加上*::來(lái)調(diào)用。比如說如果上面那個(gè)程序,如果我們不在using namespace std,那么我們就需要在主函數(shù)中的標(biāo)準(zhǔn)輸出流cout函數(shù)前面加上std,寫成
       
      std::cout
      表示調(diào)用std空間里面的標(biāo)準(zhǔn)輸出流cout。但是有些時(shí)候我們也不能圖這個(gè)方便,比如說如果在主函數(shù)中將命名空間ZhangSan和LiSi的中所定義的變量釋放出來(lái),如下例1:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      #include <iostream>
      using namespace std;
       
      namespace ZhangSan
      {
          int a=10; //張三把10賦值給了變量a
      }
      namespace LiSi
      {
          int a=5; //李四把10賦值給了變量a
      }
       
      void main()
      {
          int a=1;
          using namespace ZhangSan;
          using namespace LiSi;
          cout<<a<<endl;
      }
      這個(gè)程序輸出結(jié)果為:
      如果我們?cè)谥骱瘮?shù)中把 int a=1給刪除,如下例2:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      #include <iostream>
      using namespace std;
       
      namespace ZhangSan
      {
          int a=10; //張三把10賦值給了變量a
      }
      namespace LiSi
      {
          int a=5; //李四把10賦值給了變量a
      }
       
      void main()
      {
          using namespace ZhangSan;
          using namespace LiSi;
          cout<<a<<endl;
      }
      會(huì)發(fā)現(xiàn)根本就不會(huì)通過編譯,輸出的錯(cuò)誤信息為:
      error C2872: “a”: 不明確的符號(hào)
        分析可以看出,上面這個(gè)例2會(huì)引起歧義。因?yàn)閆hangSan中間的a被釋放出來(lái),同理LiSi中間的a也被釋放出來(lái)了。那么編譯器就不知 道到底哪個(gè)才是需要輸出的a,自然就會(huì)引起歧義了。同理,在例1中,編譯器同樣不知道到底哪個(gè)才是需要輸出的a,于是它只采用了主函數(shù)中自己定義的a,這 樣程序也不會(huì)報(bào)錯(cuò),但是只會(huì)輸出1,自然結(jié)果就如上面的圖所示了。
       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多