<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ##沒有躲過的坑--使用using namespace std的壞習慣 使用命名空間的目的是對標識符的名稱進行本地化,以避免命名沖突。 在C++中,變量、函數和類都是大量存在的。如果沒有命名空間,這些變量、函數、類的名稱將都存在于全局命名空間中,會導致很多沖突。比如,如果我們在自己的程序中定義了一個函數toupper(),這將重寫標準庫中的toupper()函 數,這是因為這兩個函數都是位于全局命名空間中的。命名沖突還會發生在一個程序中使用兩個或者更多的第三方庫的情況中。此時,很有可能,其中一個庫中的名 稱和另外一個庫中的名稱是相同的,這樣就沖突了。這種情況會經常發生在類的名稱上。比如,我們在自己的程序中定義了一個Stack類,而我們程序中使用的某個庫中也可能定義了一個同名的類,此時名稱就沖突了。 Namespace 關鍵字的出現就是針對這種問題的。由于這種機制對于聲明于其中的名稱都進行了本地化,就使得相同的名稱可以在不同的上下文中使用,而不會引起名稱的沖突。或許命名空間最大的受益者就是C++中的標準庫了。在命名空間出現之前,整個C++庫都是定義在全局命名空間中的(這當然也是唯一的命名空間)。引入命名空間后,C++庫就被定義到自己的名稱空間中了,稱之為std。這樣就減少了名稱沖突的可能性。我們也可以在自己的程序中創建自己的命名空間,這樣可以對我們認為可能導致沖突的名稱進行本地化。這點在我們創建類或者是函數庫的時候是特別重要的。 C++標準程序庫中的所有標識符都被定義于一個名為std的namespace中。? namespace是指標識符的各種可見范圍。命名空間用關鍵字namespace 來定義。命名空間是C++的一種機制,用來把單個標識符下的大量有邏輯聯系的程序實體組合到一起。此標識符作為此組群的名字。 C++標準程序庫中的所有標識符都被定義于一個名為std的namespace中。 由于namespace的概念,使用C++標準程序庫的任何標識符時,? 可以有三種選擇:? [1] 直接指定標識符? 例如std::iostream而不是iostream。完整語句如下: ~~~ std::cout<<std::hex<<3.4<<std::endl; ~~~ [2]使用using關鍵字 ~~~ using std::cout; using std::endl; using std::cin; cout << hex << 3.4 << endl; ~~~ [3]使用using namespace std ~~~ #include<iostream> #include<sstream> #include<string> using namespace std; ~~~ 但是坑兒就再這里,從我們學習C++開始,很愿意寫using namespace std,這樣在實際工程中也許就會有所災難。 看看下面的代碼: ~~~ using namespace foo; using namespace bar; ~~~ 一切都有序進行,你可以從Foo中調用Blah,可以從Quux調用Bar。? 但是有一天,你升級了Foo,在Foo中也聲明了一個Quux函數,這樣問題就來了。 也許是別人給你挖的坑兒,也許是你挖了坑在等別人。 所以千萬不要使用using namespace std這樣的語句在實際工程中,不能嫌麻煩,在調用的函數的時候,在前面冠以命名空間。 也許有的人對此感到不屑,但是對于一個優秀的程序員好習慣一定是必要的!!!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看