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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 第6章 函數 ### 6.2.3 當形參有頂層const時,傳給它常量對象或者非常量對象都是可以的。因此,當引用作為形參時,應盡量使用常量引用。 ### 6.2.6 **initializer_list**對象中的元素永遠是常值。 ### 6.3.2 調用一個返回引用的函數得到左值,其他返回類型得到右值。 - 練習6.33 ```cpp /* 文件名:ex6.33.cpp */ /* C++ Primer中文版第5版, 練習6.33 */ /* 題目要求:編寫遞歸函數,輸出vector對象的內容 */ #include <iostream> #include <vector> using namespace std; using Iter = vector<int>::const_iterator; int print_recursion(Iter beg, Iter end) { if (beg == end) { cout << "End" << endl; return 0; } cout << *beg << " "; print_recursion(++beg, end); } int main(void) { vector <int> iv{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; Iter beg = iv.cbegin(), end = iv.cend(); print_recursion(beg, end); return 0; } ``` ### 6.3.3 尾置返回類型(trailing return type)跟在形參列表后面并以->符號開頭,而在函數名前用auto關鍵字修飾。 ```cpp auto func(int i) -> int(*)[10];//返回一個指向含有10個整型的數組的指針 ``` ### 6.4 函數重載 - 不允許兩個函數除了返回類型外其他所有的要素都相同。即返回類型差異不被視為重載依據。 - 當我們傳遞一個非常量對象或者指向非常量對象的指針時,編譯器會優先選用非常量版本的函數。 ### 6.5.1 在給定的作用域中一個形參只能被賦予一次默認實參。換句話說,函數的后續聲明只能為之前那些沒有默認值的形參添加默認實參,而且該實參右側的所有形參必須都有默認值。 ### 6.5.2 內聯函數和constexpr函數 - **constexpr函數**的返回類型及所有形參的類型都得是字面值類型,而且函數體中必須有且只有一條實際操作語句(return語句)。 - **constexpr函數**被隱式地指定為內聯函數。 - 內聯函數和constexpr函數可以在程序中多次定義,因此通常定義在頭文件中。 ### 6.7 函數指針 編譯器不會將函數返回類型當成對應的指針類型處理。 - 6.7節練習 ```cpp /* 文件名:ex6.54.cpp */ /* C++ Primer中文版第5版, 6.7節練習 */ /* 題目要求: 函數指針的應用 */ #include <iostream> #include <vector> using namespace std; int myAdd(int a, int b) { return a + b; } int mySub(int a, int b) { return a - b; } int myMul(int a, int b) { return a * b; } int myDiv(int a, int b) { //return a / b; return b != 0 ? a / b : 0;//處理除數為0的情況 } int main(void) { int Fun(int, int); int a, b; vector <decltype(Fun)*> vpFun; vpFun.push_back(myAdd); vpFun.push_back(mySub); vpFun.push_back(myMul); vpFun.push_back(myDiv); cout << "Enter 2 integers, separated by space: "; cin >> a >> b; cout << "add: " << vpFun[0](a, b) << endl; cout << "sub: " << vpFun[1](a, b) << endl; cout << "mul: " << vpFun[2](a, b) << endl; cout << "div: " << vpFun[3](a, b) << endl; //system("pause");//調試環境:VS2013, Debug Win32 return 0; } ``` 運行效果: ![6.7節練習運行截圖](https://box.kancloud.cn/4ee375313049c51c694bf344a5179f1c_339x110.png =339x110)
                  <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>

                              哎呀哎呀视频在线观看