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

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

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

      Toriyung

      導航

      C++:虛表指針、虛表、虛函數和動態多態

      class Base {
      public:
          virtual void show() { std::cout << "Base show" << std::endl; }
      };
      
      class Derived_1 : public Base {
      public:
          void show() override { std::cout << "Derived show" << std::endl; }
      };
      class Derived_2: public Base {
      public:
          void show() override { std::cout << "Derived show" << std::endl; }
      };
      Base *b = new Derived_1(); 
      b->show(); Base *c = new Derived_2();
      c
      ->show();

       

      分析上面代碼,用基指針b指向Derived_1的實例化對象,然后使用b調用Derived的實例化對象重寫的虛函數show(),同樣的創建另外一個基指針調用DErived_2的實例化對象然后調用其重寫的show()

      那么有個問題,一樣時基類Base的指針,它是怎么知道我此時該調用的是Derive_1中的show()還是Derive_2中的show()?

      找一個"地圖"用來查詢,這個"地圖"就放在Derived_1和Derived_2類的里面作為它們的成員之一,上面記錄著他們各自內部所有的虛函數地址

      當調用

      b->show();

      時,會訪問Derived_1中的"地圖",找到屬于Derived_1的show()函數的地址,然后執行,c->show();同理。

      這里的"地圖"就是虛表,虛表是一個指針數組,里面存放著該類所有虛函數的地址。

      顯然,每個類都有自己不同的虛表,那基類指針b是如何得到對應不同的虛表?

      當使用多態指針進行類的實例化時,就會"得到"地圖,每個基類內都有個成員,稱之為虛表指針

      當執行

      Base *b = new Derived_1(); 

      時,b的虛表指針就會初始化為Derived_1實例化對象的虛表地址,或者說指向虛表,這樣一來就可以通過虛表指針找到虛表,再進一步找到需要的虛函數

       

       

       

      然后就是一個比較重要的問題:為什么必須是指針或者引用才能實現多態?

      這里引用一篇博客的實驗

      簡單來說,通過前面的闡述,我們知道多態是通過虛表指針、虛表進行索引查找子類的虛函數,

      賦值方式沒辦法對多態指針(基類指針)進行初始化,也就是說,以下面這種方式

      Base b;
      Derived_1 bb;
      b = bb; 

      b內的虛表指針是不會指向bb的虛表,自然無法通過b去調用bb的show函數

      posted on 2024-05-29 17:09  Toriyung  閱讀(31)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲国产精品久久久天堂麻豆宅男 | 成人无套少萝内射中出| 无码熟妇人妻av在线电影| 丁香五月婷激情综合第九色| 欧美老熟妇乱子伦牲交视频| 中国熟妇毛多多裸交视频| 欧美最新精品videossexohd| 麻豆蜜桃av蜜臀av色欲av| 午夜福利国产一区二区三区| 国语做受对白XXXXX在线| 亚洲精品麻豆一二三区| 国产精品一区二区色综合| 日本一区二区三区后入式| 老司机午夜福利视频| 不卡一区二区国产在线| 少妇真人直播免费视频| 717午夜伦伦电影理论片| 达州市| 亚洲无线码在线一区观看| 东方av四虎在线观看| 日本无遮挡吸乳呻吟视频| 亚洲色大成网站www看下面| 国产黄色精品一区二区三区| 女人与公狍交酡女免费| 亚洲鸥美日韩精品久久| 少妇伦子伦情品无吗| 精品国产福利一区二区在线| 西城区| AV人摸人人人澡人人超碰| 亚洲成人av综合一区| 337p西西人体大胆瓣开下部| 日日碰狠狠添天天爽五月婷 | 国产精品国产精品偷麻豆| 国产在线啪| 亚洲乱码精品久久久久..| 国内精品视频一区二区三区八戒| 免费午夜无码片在线观看影院 | 草裙社区精品视频播放| 国产精品高清视亚洲乱码| 骚虎三级在线免费播放| 亚洲精品美女一区二区|