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

大龍的博客

常用鏈接

統計

最新評論

轉: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>
            亚洲精品偷拍| 亚洲精品国产精品国产自| 久久久精品2019中文字幕神马| 欧美成人综合在线| 亚欧美中日韩视频| 国产精品激情电影| 这里只有精品电影| 亚洲精选成人| 欧美午夜国产| 亚洲欧美久久| 亚洲一区国产| 国产精品在线看| 久久国产一二区| 新67194成人永久网站| 国产乱码精品一区二区三区不卡 | 91久久午夜| 久久久久九九九| 国产精品视频| 亚洲免费在线电影| 欧美激情亚洲视频| 国产精品视频一| 亚洲专区国产精品| 亚洲三级电影全部在线观看高清| 久久精品五月| 狠狠色狠狠色综合日日五| 久久久久高清| 久久精品二区亚洲w码| 国产一区二区三区自拍| 欧美一区二区三区在线| 亚洲综合色噜噜狠狠| 久久男女视频| 欧美中文字幕在线视频| 在线观看国产欧美| 久久久在线视频| 久久福利精品| 狠狠色综合色区| 亚洲日本aⅴ片在线观看香蕉| 久久久www| 日韩视频在线你懂得| 久久国产日本精品| 亚洲天堂网在线观看| 久久久久88色偷偷免费| 激情综合激情| 99riav1国产精品视频| 国产精品无人区| 欧美www在线| 欧美日韩国产一区二区三区地区| 黑人一区二区| 日韩视频专区| 国产精品日本欧美一区二区三区| 久久伊伊香蕉| 欧美电影在线免费观看网站| 午夜一区在线| 美女被久久久| 亚洲一区日韩| 欧美一区二区私人影院日本| 亚洲专区欧美专区| 激情综合五月天| 亚洲精品国产无天堂网2021| 国产精品久久77777| 久久人人精品| 欧美日韩网站| 久久深夜福利| 欧美日韩亚洲一区三区| 久久精品国产亚洲一区二区三区| 久久久久久亚洲精品杨幂换脸| 亚洲国产欧美不卡在线观看| 99亚洲一区二区| 激情一区二区三区| 欧美高清视频在线观看| 欧美精品国产精品| 欧美一级淫片aaaaaaa视频| 久久乐国产精品| 亚洲欧美色婷婷| 巨乳诱惑日韩免费av| 亚洲欧美国产77777| 美女图片一区二区| 欧美一区国产一区| 欧美成人三级在线| 午夜久久tv| 黄色成人在线| 国产综合第一页| 亚洲欧美在线高清| 欧美成人一区二区三区| 中日韩高清电影网| 国产精品日本精品| 亚洲图色在线| 国产精品v欧美精品v日韩 | 亚洲第一天堂av| 久久国产精品网站| 欧美韩日视频| 久久亚洲色图| 国产日韩精品电影| 日韩写真在线| 免费不卡在线视频| 国产精品男女猛烈高潮激情| 亚洲国产影院| 亚洲高清在线精品| 久久精品国产一区二区三| 亚洲高清网站| 亚洲欧美在线磁力| 久久久久综合网| 国产亚洲精品久久久久久| 亚洲与欧洲av电影| 先锋影音久久| 国产精品久久婷婷六月丁香| 999在线观看精品免费不卡网站| 91久久久在线| 欧美成人免费网站| 亚洲精品乱码久久久久久黑人 | 欧美日韩国产成人| 亚洲激情欧美| 日韩亚洲视频在线| 欧美日韩国产成人在线| 99这里只有久久精品视频| 一区二区三区视频免费在线观看| 欧美高清视频一区二区三区在线观看| 老司机凹凸av亚洲导航| 亚洲电影av| 欧美成人在线免费视频| 亚洲欧洲综合另类| 中文欧美字幕免费| 国产精品网站在线播放| 欧美夜福利tv在线| 免费成人高清视频| 亚洲日本视频| 欧美日韩中文字幕在线视频| 宅男66日本亚洲欧美视频| 在线观看91精品国产麻豆| 亚洲日本欧美| 国产欧美日本| 狠狠爱综合网| 亚洲另类视频| 午夜精品久久久久久久99樱桃| 亚洲精品视频在线播放| 亚洲精品美女久久久久| 午夜在线播放视频欧美| 欧美成人日韩| 洋洋av久久久久久久一区| 亚洲国产精品传媒在线观看| 午夜精品一区二区在线观看| 久热精品在线| av成人毛片| 国产精品久久久久久久久久免费看| 亚洲自拍啪啪| 欧美黑人国产人伦爽爽爽| 亚洲一区二区三区四区在线观看| 国产精品视频区| 久久精品国产综合| 一本大道久久a久久综合婷婷| 久久免费国产精品| 在线视频你懂得一区二区三区| 国产日韩欧美91| 国产一区二区三区久久| 女仆av观看一区| 国产精品视频免费观看| 久久av一区| 欧美一区二区三区免费大片| 国内一区二区三区在线视频| 欧美亚洲专区| 久久国产手机看片| 欧美日韩国产精品| 久久久久在线观看| 欧美精品v日韩精品v韩国精品v | 亚洲一区在线直播| 欧美成人免费大片| 午夜精品在线看| 亚洲美女毛片| 精品va天堂亚洲国产| 国产精品视频yy9299一区| 欧美成人激情视频| 欧美伊人影院| 亚洲婷婷国产精品电影人久久| 欧美暴力喷水在线| 久久精品五月| 亚洲欧美日韩一区二区| 一本一本a久久| 亚洲国产精品一区二区尤物区| 国产女人精品视频| 母乳一区在线观看| 久久久久久9| 欧美一区二区高清| 亚洲自拍偷拍福利| 中国亚洲黄色| 99精品视频免费观看视频| 欧美成人免费全部观看天天性色| 欧美一区二区三区成人| 亚洲综合视频在线| 亚洲午夜国产一区99re久久 | 欧美亚洲一区| 亚洲在线视频一区| 亚洲视频 欧洲视频| 日韩午夜激情av| 99热免费精品在线观看| 日韩亚洲视频在线| 精品成人在线| 国产精品美女久久久久久2018 | 欧美成人久久| 免费短视频成人日韩| 欧美sm视频|