<dl id="opymh"></dl>

<div id="opymh"></div>
      <div id="opymh"><tr id="opymh"></tr></div>

        <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

        <em id="opymh"></em>

        <em id="opymh"><ol id="opymh"></ol></em>

              頻道欄目
              首頁 > 程序開發 > 軟件開發 > C++ > 正文
              關于C++多態的基礎知識講解
              2018-07-27 15:23:12         來源:c243311364的博客  
              收藏   我要投稿

              一.多態性有兩種表現形式:

              1)編譯時多態性:同一對象在收到相同的消息卻產生不同的函數調用,一般通過函數重載來實現,在編譯時就實現了綁定,屬于靜態綁定。

              2)運行時多態性:不同對象在收到相同消息時產生不同的動作,一般通過虛函數來實現。

              二.多態和非多態的實質區別

              函數地址為動態綁定還是靜態綁定。

              三.多態的作用

              對于封裝,可以使代碼模塊化。

              對于繼承,可以擴展已經存在的代碼。

              而多態,是為了接口重用。

              四.多態最常見的用法

              最常見的用法就是聲明基類的指針,利用該指針指向任意一個子類對象,調用相應的虛函數,可以根據指向的子類的不同而實現不同的方法。如果沒有使用虛函數的話,即沒有利用C++多態性,則利用基類指針調用相應的函數的時候,將總被限制在基類函數本身,而無法調用到子類中被重寫過的函數。因為沒有多態性,函數調用的地址將是一定的,而固定的地址將始終調用到同一個函數,這就無法實現一個接口,多種方法的目的了。

              五.擴展了解隱藏規則

              本來僅僅區別重載與覆蓋并不算困難,但是C++的隱藏規則使問題復雜性陡然增加。

              這里“隱藏”是指派生類的函數屏蔽了與其同名的基類函數,規則如下:

              **1)如果派生類的函數與基類的函數同名,但是參數不同。此時,不論有無virtual關鍵字,基類的函數將被隱藏。(注意別和重載混淆)

              2)如果派生類的函數與基類的函數相同,但是基類沒有virtual關鍵字,那么基類的函數將被隱藏。(注意別和覆蓋混淆)。**

              點擊復制鏈接 與好友分享!回本站首頁
              上一篇:C++關于左值,右值,左值引用,右值引用,std::move, std::foward等知識講解
              下一篇:C++編程之引用和拷貝構造函數、按值傳遞和返回、位拷貝與初始化等實例
              相關文章
              圖文推薦
              點擊排行

              關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

              版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

              极速飞艇好假
              <dl id="opymh"></dl>

              <div id="opymh"></div>
                  <div id="opymh"><tr id="opymh"></tr></div>

                    <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                    <em id="opymh"></em>

                    <em id="opymh"><ol id="opymh"></ol></em>

                          <dl id="opymh"></dl>

                          <div id="opymh"></div>
                              <div id="opymh"><tr id="opymh"></tr></div>

                                <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                                <em id="opymh"></em>

                                <em id="opymh"><ol id="opymh"></ol></em>