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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # C++ 中的多態 > 原文: [https://beginnersbook.com/2017/08/cpp-polymorphism/](https://beginnersbook.com/2017/08/cpp-polymorphism/) 多態是 [OOP](https://beginnersbook.com/2017/08/cpp-oops-concepts/) 的一個特征,它允許對象在不同條件下表現不同。在 C++ 中,我們有兩種類型的多態: 1)編譯時多態 - 這也稱為靜態(或早期)綁定。 2)運行時多態 - 這也稱為動態(或晚期)綁定。 ## 1)編譯時多態 函數重載和運算符重載是編譯時多態的完美例子。 ### 編譯時多態示例 在這個例子中,我們有兩個具有相同名稱但參數數量不同的函數。根據我們在函數調用期間傳遞的參數確定要調用哪個函數,這就是為什么它被視為多態的一個例子,因為在不同的條件下輸出是不同的。因為,在編譯期間確定調用,這就是為什么它被稱為編譯時多態。 ```cpp #include <iostream> using namespace std; class Add { public: int sum(int num1, int num2){ return num1+num2; } int sum(int num1, int num2, int num3){ return num1+num2+num3; } }; int main() { Add obj; //This will call the first function cout<<"輸出: "<<obj.sum(10, 20)<<endl; //This will call the second function cout<<"輸出: "<<obj.sum(11, 22, 33); return 0; } 輸出: ``` ```cpp 輸出: 30 輸出: 66 ``` ## 2)運行時多態 函數覆蓋是運行時多態的一個例子。 **函數覆蓋**:當子類聲明一個已存在于父類中的方法時,這稱為函數覆蓋,這里子類覆蓋父類。 在函數覆蓋的情況下,我們有兩個相同函數的定義,一個是父類,一個是子類。在**運行時**確定對函數的調用,以決定調用函數的哪個定義,這就是它被稱為運行時多態的原因。 ### 運行時多態的例子 ```cpp #include <iostream> using namespace std; class A { public: void disp(){ cout<<"Super Class Function"<<endl; } }; class B: public A{ public: void disp(){ cout<<"Sub Class Function"; } }; int main() { //Parent class object A obj; obj.disp(); //Child class object B obj2; obj2.disp(); return 0; } ``` 輸出: ```cpp Super Class Function Sub Class Function ```
                  <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>

                              哎呀哎呀视频在线观看