<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # auto – 從初始化中推斷數據類型 考慮下面的代碼: ``` auto x = 7; ``` 這里的變量x被整數7初始化,所以x的實際數據類型是int。auto的通用形式如下: ``` auto x = expression; ``` 這樣,這個表達式計算結果的數據類型就是變量x的數據類型。 當數據類型未知或不便書寫時,使用auto可讓編譯器自動根據用以初始化變量的表達式類型來推導變量類型。考慮如下代碼: ``` template<class T> void printall(const vector<T>& v) { // 根據v.begin()的返回值類型自動推斷p的數據類型 for (auto p = v.begin(); p!=v.end(); ++p) cout << *p << “n”; } ``` 為了表示同樣的意義,在C++98中,我們不得不這樣寫: ``` template<class T> void printall(const vector<T>& v) { for (typename vector<T>::const_iterator p = v.begin(); p!=v.end(); ++p) cout << *p << “n”; } ``` 當變量的數據類型依賴于模板參數時,如果不使用auto關鍵字,將很難確定變量的數據類型。例如: ``` template<class T,classs U> void multiply (const vector<T>& vt, const vector<U>& vu) { // … auto tmp = vt[i]*vu[i]; // … } ``` 在這里,tmp的數據類型應該與模板參數T和U相乘之后的結果的數據類型相同。對于程序員來說,要通過模板參數確定tmp的數據類型是一件很困難的事情。但是,對于編譯器來說,一旦確定了T和U的數據類型,推斷tmp的數據類型將是輕而易舉的一件事情。 auto特性是C++11中最早被提出并被實現的特性。早在1984年,我就在我的Cfont中實現了auto特性,但是由于一些兼容性問題,它沒有被納入以前的標準。當C++98和C99同意刪除“implicit int”之后,這些兼容性問題已經不復存在了,也就是C++語言對“每個變量和函數都要有確切的數據類型”的要求消失了。auto關鍵字原來的含義(表示local變量)是多余而無用的——標準委員會的成員們在數百萬行代碼中僅僅只找到幾百個用到auto關鍵字的地方,并且大多數出現在測試代碼中,有的甚至就是一個bug。 auto主要用于簡化代碼,因此并不會影響標準庫規范。 參考: * the C++ draft section 7.1.6.2, 7.1.6.4, 8.3.5 (for return types) * [N1984=06-0054] Jaakko Jarvi, Bjarne Stroustrup, and Gabriel Dos Reis:[Deducing the type of variable from its initializer expression (revision 4)](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf).
                  <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>

                              哎呀哎呀视频在线观看