<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國際加速解決方案。 廣告
                [TOC] ## 重載 ? ? ?重載是指有兩個或多個函數名相同,但是函數的參數列表(參數的類型、個數、順序)不同。對于重載函數的調用,在編譯期間就已經確定了,是靜態的,它們的地址在編譯期間就綁定了,注意,這與多態無關!!!程序會根據不同的參數列來確定具體調用哪個函數。 ``` double calculate(double); double calculate(double, int); double calculate(double, double); double calculate(double, float); double calculate(int, dounle); double calculate(int); ``` 6個同名函數calculate,它們中任意兩個構成重載,因為它們的參數列表不同 重載函數具有如下特征: 1):相同的范圍(如在同一個類中); 2):函數名稱相同; 3):參數列表不同; 4):virtual關鍵字可有可無; ## 覆蓋 ? ? ?覆蓋是指派生類中存在重新定義的父類的函數,其函數名、參數列表、返回值類型必須同父類中的相對應被覆蓋的函數嚴格一致,覆蓋函數與被覆蓋函數只有函數體不同。 ``` class A { public: void f1(){cout<<"A::f1()"<<endl;} } class B:public A { public: void f1(){cout<<"B::f1()"<<endl} } ``` 派生類B中的函數f1()就覆蓋了父類中的函數f1(),當派上類對象調用函數f1()時會自動調用派生類的覆蓋版本,而不是父類中被覆蓋的版本。 覆蓋的特征如下: 1):不同的范圍(分別位于派生類和父類); 2):函數名稱相同; 3):參數相同; ## 多態 ### 編譯時多態 就是在編譯期確定的一種多態。在C++中主要體現在函數模板,這里需要注意,函數重載和多態無關,很多地方把函數重載誤認為是編譯多態,這是錯誤的??? ``` //例1 函數模板體現編譯期多態性 #include <iostream> using namespace std; template <typename T> T add(T a, T b) { t c = a+b; return c; } int main() { int a1 = 1; int b1 = 2; int c1 = add(a1,b1); cout<<"c1:"<<c1<<endl; double a2 = 2.0; double b2 = 4.0; double c2 = add(a2,b2); cout<<"c2:"<<c2<<endl; } ``` 在上述例子中,定義了一個函數模板,用來計算兩個數的和。這兩個數的數據類型在使用時才知道,main函數中調用同一個函數分別計算了兩個int值和兩個double值的和,這就體現了多態,在編譯期,編譯器根據一定的最佳匹配算法來確定函數模板的參數類型到底是什么,這就體現了**編譯期的多態性**。 ### 運行時的多態性 ?????C++運行時多態性主要是通過虛函數來實現的。體現在具有繼承關系的父類和子類之間,子類重新定義父類的成員函數成為覆蓋或者重寫,而虛函數允許子類重新定義父類的成員函數,即重寫父類的成員函數。
                  <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>

                              哎呀哎呀视频在线观看