青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統計

最新評論

轉:C++對象模型 多重繼承與虛函數表

一 多重繼承

1) 代碼:

Code
#include <iostream>
using namespace std;
class B1
{
public:
int x;
virtual void v1(){ cout << "B1::v1" << endl; }
void f1(){cout << "B1::f1" << endl; }
};
class B2
{
public:
int y;
virtual void v2(){ cout << "B2::v2" << endl; }
void f2(){ cout << "B2::f2" << endl; }
};
class B3
{
public:
int z;
virtual void v3(){ cout << "B3::v3" << endl; }
void f3(){ cout << "B3::f3" << endl; }
};
class D : public B1, public B2, public B3
{
public:
int a;
void v3(){ cout << "D::v3" << endl; }
virtual void vD(){ cout << "D::vD" << endl; }
};

2)類圖:

3)VS2008的編譯選項查看布局:

4)可視化表示:

5)代碼驗證:

Code
typedef void (*Fun)();
void PrintMember(int *pI)
{
     cout << *pI << endl;
}
void PrintVT(int *pVT)
{
while(*pVT != NULL)
     {
         (*(Fun*)(pVT))();
         pVT++;
     }
}
void PrintVTAndMember(B1 *pD)
{
int *pRoot = (int*)pD;
int *pVTB1 = (int*)*(pRoot + 0);PrintVT(pVTB1);
int *pMB1 = pRoot +1; PrintMember(pMB1);
int *pVTB2 = (int*)*(pRoot + 2);PrintVT(pVTB2);
int *pMB2 = pRoot +3; PrintMember(pMB2);
int *pVTB3 = (int*)*(pRoot + 4);PrintVT(pVTB3);
int *pMB3 = pRoot +5; PrintMember(pMB3);
}
void TestVT()
{
     B1 *pB1 = new D();
     D *pD = dynamic_cast<D*>(pB1);
     pD->x = 10;
     pD->y = 20;
     pD->z = 30;
     pD->a = 40;
     PrintVTAndMember(pD);
     delete pD;
}

6) 驗證代碼運行結果:

7)總結:

與單繼承相同的是所有的虛函數都包含在虛函數表中,所不同的多重繼承有多個虛函數表,當子類對父類的虛函數有重寫時,子類的函數覆蓋父類的函數在對應的虛函數位置,當子類有新的虛函數時,這些虛函數被加在第一個虛函數表的后面。

二 多重繼承運行時類型轉化

1)代碼驗證:

Code
void TestDynamicCast()
{
     B1 *pB1 = new D();
     cout << "B1:" << pB1 << endl;
     D *pD = dynamic_cast<D*>(pB1);
     cout << "D:"<< pD << endl;
     B2 *pB2 = dynamic_cast<B2*>(pB1);
     cout << "B2:" << pB2 << endl;
     B3 *pB3 = dynamic_cast<B3*>(pB1);
     cout << "B3:" << pB3 << endl;
     delete pD;
}

2)驗證代碼的運行結果:

3)總結:

從多重繼承的內存布局,我們可以看到子類新加入的虛函數被加到了第一個基類的虛函數表,所以當dynamic_cast的時候,子類和第一個基類的地址相同,不需要移動指針,但是當dynamic_cast到其他的父類的時候,需要做相應的指針的移動。

三 完!

感謝,Thanks!
作者:iTech
出處:http://itech.cnblogs.com/
轉載:本文版權歸作者iTech所有,轉載請注明出處,不得用于商業用途!

C++對象模型系列:

本系列是主要是作者經驗的總結且同時參考了大量的網絡文章,希望能夠給C++的學習者有所幫助,但是由于作者水平有限,難免有錯,希望大家能夠指出,我將虛心地向大家學習,與大家共同進步!本系列的開發環境是Windows 32+VS2008。

posted on 2010-04-14 12:49 大龍 閱讀(314) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产精品v| 99精品国产在热久久下载| 午夜精品久久99蜜桃的功能介绍| 免费在线看一区| 亚洲精品综合| 亚洲精品视频免费观看| 欧美日韩国产首页在线观看| 亚洲精品国产精品国自产观看浪潮| 欧美成人在线网站| 欧美黄色片免费观看| 亚洲桃花岛网站| 亚洲免费在线| 在线高清一区| 亚洲美女区一区| 国产欧美亚洲视频| 欧美成人一品| 欧美日韩国产一区精品一区| 亚洲欧美日韩国产另类专区| 久久激情一区| 亚洲一区二区成人在线观看| 午夜精品视频在线观看一区二区 | 99精品热6080yy久久| 欧美三级资源在线| 久久婷婷影院| 欧美日韩国内| 久热综合在线亚洲精品| 欧美二区在线| 欧美一区二区视频网站| 老司机一区二区三区| 亚洲欧美日韩精品| 免费高清在线视频一区·| 亚洲一区二区三区激情| 久久久噜久噜久久综合| 国产精品99久久久久久宅男| 久久九九热免费视频| 夜色激情一区二区| 久久精品国产一区二区三区免费看| 亚洲精品国产日韩| 久久国产精品亚洲77777| 亚洲视频电影图片偷拍一区| 久久成人国产| 午夜精品久久久久99热蜜桃导演| 蜜臀av国产精品久久久久| 亚洲欧美综合v| 欧美精品乱人伦久久久久久| 久久激情五月丁香伊人| 欧美日韩免费观看一区| 欧美国产综合| 亚洲第一视频网站| 久久99在线观看| 亚洲欧美日本精品| 欧美巨乳在线观看| 牛牛影视久久网| 国内在线观看一区二区三区| 亚洲午夜久久久久久尤物 | 欧美调教视频| 亚洲国产精品va在看黑人| 激情综合激情| 久久国产精品久久久久久久久久| 亚洲欧美中日韩| 欧美午夜一区二区福利视频| 亚洲乱码精品一二三四区日韩在线| 在线欧美一区| 久久漫画官网| 欧美成人免费全部| 亚洲成色最大综合在线| 久久久99免费视频| 蜜桃av综合| 在线观看欧美日韩国产| 久热精品视频在线观看| 欧美成人日本| 亚洲国产精品一区二区www在线| 久久视频精品在线| 欧美激情亚洲激情| 99视频超级精品| 欧美午夜剧场| 亚洲欧美日韩在线播放| 欧美在线观看日本一区| 国产亚洲网站| 久久精品在线视频| 欧美福利网址| 一区二区久久久久| 国产精品女人网站| 欧美在线播放一区二区| 久久免费视频观看| 亚洲欧洲一区二区三区| 欧美激情中文字幕在线| 一区二区三区四区五区视频| 午夜在线a亚洲v天堂网2018| 国产日韩欧美综合一区| 久久久亚洲欧洲日产国码αv| 亚洲高清电影| 亚洲综合丁香| 激情综合网址| 欧美日韩一区二区三区| 亚洲女人小视频在线观看| 鲁大师影院一区二区三区| 日韩一级大片在线| 国产精品va在线| 久久久久88色偷偷免费| 亚洲人www| 久久国产精品久久久久久久久久| 国内精品久久久久久| 欧美二区在线看| 亚洲欧美日韩综合国产aⅴ| 欧美成人精品福利| 亚洲欧美久久| 亚洲国产欧美在线| 国产精品一二一区| 欧美激情视频一区二区三区不卡| 亚洲深夜影院| 欧美激情一区二区三区在线视频观看 | 亚洲一区二区三区精品动漫| 黄色成人av网站| 欧美亚洲成人免费| 久久综合中文字幕| 亚洲欧美日韩一区在线| 亚洲区一区二| 免费欧美在线视频| 午夜日韩av| 夜夜嗨av一区二区三区四季av| 国内精品美女在线观看| 欧美日韩在线高清| 欧美成年视频| 久久亚洲二区| 欧美综合第一页| 亚洲女同精品视频| 亚洲色图自拍| 99精品视频一区二区三区| 嫩草影视亚洲| 久久一二三四| 欧美资源在线| 欧美在线视频观看| 欧美亚洲网站| 午夜精品久久久久久久久久久久久| 亚洲精品视频一区| 亚洲国产另类 国产精品国产免费| 国产欧美精品一区二区色综合 | 久久精品国产69国产精品亚洲| 一区二区电影免费在线观看| 亚洲国产色一区| 亚洲高清毛片| 亚洲欧洲另类| 亚洲麻豆一区| 夜夜嗨av一区二区三区四区| 日韩视频精品| 一区二区三区日韩精品视频| 亚洲免费观看在线视频| 99在线观看免费视频精品观看| 亚洲韩国精品一区| 亚洲免费电影在线| 一区二区三区成人精品| 一区二区三区久久| 亚洲影音先锋| 欧美伊人久久| 久热精品视频在线观看| 美女视频黄a大片欧美| 免费一级欧美在线大片| 欧美激情第五页| 欧美日韩一区二区三区在线观看免| 欧美日韩四区| 国产乱码精品一区二区三| 国产亚洲精品7777| 亚洲电影第三页| 亚洲免费电影在线| 亚洲女同精品视频| 久久精品国产成人| 免费在线观看日韩欧美| 亚洲高清久久| 亚洲在线免费视频| 久久蜜桃av一区精品变态类天堂| 麻豆国产精品va在线观看不卡| 欧美精品综合| 国产日韩欧美电影在线观看| 精东粉嫩av免费一区二区三区| 亚洲日本欧美| 香蕉亚洲视频| 欧美3dxxxxhd| 一区二区三区视频观看| 久久精品一二三区| 欧美日韩精品一区二区| 国产一区久久久| 日韩一级网站| 久久久久久欧美| 99成人精品| 久久蜜桃资源一区二区老牛| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 亚洲黑丝一区二区| 性色一区二区| 欧美激情一区二区三区在线视频| 国产精品久久国产精麻豆99网站| 亚洲高清不卡| 久久国产免费| 99精品欧美一区| 裸体女人亚洲精品一区| 国产精品美女久久福利网站| 最近看过的日韩成人| 久久久久久婷| 亚洲综合日韩在线| 欧美丝袜一区二区|