<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      業精于勤荒于嬉,行成于思毀于隨!

      導航

      虛函數(1)

      一、C++為什么引入虛函數,虛函數有哪些用途?

             1.非虛的世界

                 對象的自恰性:對同樣的函數調用,每個對象都會做出恰當的響應.

                      b. 通過指向子類對象的基類指針調用函數:

                       只能調用基類的成員函數,雖然指針指向子類對象.

                       一旦調用子類所特有的成員函數,將引發編譯錯誤.

                      c.通過指向基類對象的子真調用函數:

                         可以調用子類的成員函數,盡管指針指向基類對象.

                         直接或簡介地訪問子類的成員變量,后果不可預知

                       d.名字隱藏

                           子類的成員函數隱藏基類的同名的成員函數.

                        

      #include <iostream>
      #include <string>
      using namespace std;
      class Base
      {
      public:
          Base(int data = 0):m_data(data){}
          void print(void) const 
          {
              cout << m_data << endl;
          }
      private:
          int m_data;
      };
      class Derived:public Base 
      {
      public:
          Derived(int data,const string& info):
              Base(data),m_info(info){}
          void show(void) const 
          {
              print();
              cout << m_info << endl;
          }
          void foo(void)
          {
              cout << "Derived::foo(void)" << endl;
          //    m_info = "abc";
          }
      private:
          string m_info;
      };
      
      int main(void)
      {
          Base b(100);
          Derived *pd = static_cast<Derived*>(&b); /*子類的指針指向父類*/
          /*pd->show();*/ /*這里可以成功調用但是調用的結果是未定義的
                        因為編譯器在調用的時候只看類型.
                       */
          pd = NULL;
          pd->foo();  //這里是可以的,因為編譯器在編譯的時候只看類型.
          ((Derived*)0)->foo();
          /*函數并不存在于對象中,調用成員函數的時候,
           只要調用的類型是對的,就可以根據類型調用相應的
           成員函數.但是這種情況之下不能訪問成員變量*/
          return 0;
      }

      2. 虛函數和名字隱藏

          class 類名

          {

             virtual 返回類型 函數名(形參表){...}

          }

          的成員函數,稱為虛函數或方法

          覆蓋:

          如果子類的成員函數和基類的虛函數具有相同的函數原型,那么該成員

          函數就也是虛函數,無論其是否有virtual關鍵字,且對基類的虛函數

          構成覆蓋.

          還有一種就是如果沒有virtual的時候,只要函數名相同就會形成覆蓋.

      3.多態

          如果子類提供了對基類虛函數的有效覆蓋,那么通過一個指向子類對象的基類指針,

           或者引用子類對象的基類引用,調用該虛函數,實際被調用的將是子類中覆蓋

           版本,而非基類中的原始,這種現象稱之為多態.

           多態的重要意義在于,一般的情況下,調用哪個類的成員函數是由調用者指針或引用

           本身的類型決定的,而當多態發生的時候,調用哪個類的成員函數則

           完全由調動者指針或引用的實際目標對象的類型決定的.

        4.有效的虛函數的覆蓋要滿足如下的條件

            該函數必須是成員函數,既不能是全局函數也不能是靜態成員函數.

            該函數必須在基類中用vitual關鍵字聲明為虛函數

            覆蓋版本與基類版本必須擁有完全相同的簽名,即是函數名,行參表和常屬性嚴格一致.

            如果基類版本返回基本數據類型,那么覆蓋版本必須返回相同的類型的數據.

            如果基類版本返回類類型對象的指針或引用,那么覆蓋版本可以返回

            其子類類型對象的指針或引用.

       

      posted on 2014-07-20 13:48  亞三論  閱讀(368)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 男人又大又硬又粗视频| 亚洲色大成网站www永久男同| 亚洲综合色一区二区三区| 四虎在线中文字幕一区| 妇女自拍偷自拍亚洲精品| 中文字幕精品亚洲二区| 成人午夜大片免费看爽爽爽| 五十路久久精品中文字幕| 国产精品黑色丝袜在线观看| 阿拉善盟| 亚洲综合一区二区三区不卡| 午夜精品极品粉嫩国产尤物| 永久免费精品性爱网站| 国产四虎永久免费观看| 国产成人精品1024免费下载| 少妇熟女久久综合网色欲| 久久天堂综合亚洲伊人HD妓女| 日韩中文字幕免费在线观看| 国产精品入口麻豆| 欧美成本人视频免费播放| 乱色熟女综合一区二区三区| 久久夜色精品国产噜噜亚洲sv| 你拍自拍亚洲一区二区三区| 人妻偷拍一区二区三区| 亚洲精品香蕉一区二区| 久久av高潮av喷水av无码| 欧美老熟妇乱子伦牲交视频| 久久国产一区二区三区| av午夜福利亚洲精品福利| 亚洲国产精品综合久久20| 蜜桃av无码免费看永久| 亚洲护士一区二区三区| 久久夜色撩人国产综合av| a男人的天堂久久a毛片| 女人喷水高潮时的视频网站| 亚洲精品综合第一国产综合| 久久久国产精品樱花网站| 新乡市| 久久精品国产男包| 性欧美vr高清极品| 亚洲精品~无码抽插|