• <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>
            posts - 101,  comments - 57,  trackbacks - 0
            1.多重繼承

            #include "iostream"
            using namespace std;


            class A
            {
                
            int a;
            public:
                
            virtual void Fun(int n)
                
            {
                    a 
            = n;
                    cout
            <<"This is in A : "<<a<<endl;
                }

            }
            ;

            class B : public A
            {
                
            int b;
            public:
                
            virtual void Fun(int n)
                
            {
                    b 
            = n;
                    cout
            <<"This is in B : "<<b<<endl;
                }

            }
            ;

            class C : public A
            {
                
            int c;
            public:
                
            virtual void Fun(int n)
                
            {
                    c 
            = n;
                    cout
            <<"This is in C : "<<c<<endl;
                }

            }
            ;

            class D : public B, public C
            {
                
            int d;
            public:
                
            virtual void Fun(int n)
                
            {
                    d 
            = n;
                    cout
            <<"This is in D : "<<d<<endl;
                }

            }
            ;


            int main()
            {
                D d;
                d.Fun(
            3);
                
            return 0;
            }


            先來看看多重繼承的對(duì)象組織的結(jié)構(gòu)


            實(shí)際上,多重繼承vc都將它解釋為這個(gè)結(jié)構(gòu)。但是多重集成中實(shí)際在內(nèi)存中的組織是很不一樣的

            00B606D8  0046F020  offset test3.D::`vftable'
            00B606DC  CDCDCDCD    A::a
            00B606E0  CDCDCDCD    B::b
            00B606E4  0046F01C  offset test3.D::`vftable'
            00B606E8  CDCDCDCD   A::a
            00B606EC  CDCDCDCD  C::c
            00B606F0  CDCDCDCD  D::d

            note:
               按照道理來說兩個(gè)offset test3.D::`vftable'應(yīng)該指向同一個(gè)地方才對(duì),可這里是?

               第二個(gè)offset test3.D::`vftable'指向的位置是第二篇講過的跳轉(zhuǎn)函數(shù)!

            2.虛繼承

            #include "iostream"
            using namespace std;


            class A
            {
                
            int a;
            public:
                
            virtual void Fun(int n)
                
            {
                    a 
            = n;
                    cout
            <<"This is in A : "<<a<<endl;
                }

            }
            ;

            class B : virtual  public  A
            {
                
            int b;
            public:
                
            virtual void Fun(int n)
                
            {
                    b 
            = n;
                    cout
            <<"This is in B : "<<b<<endl;
                }

            }
            ;

            class C :virtual  public  A
            {
                
            int c;
            public:
                
            virtual void Fun(int n)
                
            {
                    c 
            = n;
                    cout
            <<"This is in C : "<<c<<endl;
                }

            }
            ;

            class D : public  B, public  C
            {
                
            int d;
            public:
                
            virtual void Fun(int n)
                
            {
                    d 
            = n;
                    cout
            <<"This is in D : "<<d<<endl;
                }

            }
            ;


            int main()
            {
                D 
            *pd = new D;
                pd
            ->Fun(sizeof(D));
                
            return 0;
            }


            00A806D8  0046F02C  offset test3.D::`vbtable'
            00A806DC  CDCDCDCD   B::b
            00A806E0  0046F020  offset test3.D::`vbtable'
            00A806E4  CDCDCDCD   C::c
            00A806E8  CDCDCDCD   A::a
            00A806EC  0046F01C  offset test3.D::`vftable'
            00A806F0  CDCDCDCD  D::d

            第一和第二個(gè)offset test3.D::`vbtable' 指向一個(gè)偏移跳轉(zhuǎn)表,它的表中用偏移指向了真正的offset test3.D::`vbtable',第三個(gè)是真正的offset test3.D::`vbtable'地址

            0046F01C >004011A9  test3.004011A9  第三個(gè)offset test3.D::`vbtable'
            0046F020 >00000000                               第二個(gè)offset test3.D::`vbtable' 
            0046F024  0000000C                               偏移C
            0046F028  00000000
            0046F02C >00000000                               第一個(gè)offset test3.D::`vbtable'
            0046F030  00000014                                便宜14

             

            posted on 2008-03-24 00:04 margin 閱讀(502) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++逆向工程
            <2010年10月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿

            隨筆檔案

            文章分類

            文章檔案

            收藏夾

            常去的壇子

            • CVC電腦病毒論壇
            • 很多人說我是AV,我告訴他們:別瞧不起人,我們也能創(chuàng)造價(jià)值
            • 安全焦點(diǎn)
            • 黑客聚集的地方,一般是好酒最多的地方...
            • 看雪論壇
            • 國(guó)內(nèi)最強(qiáng)的加密解密論壇,成醉其中經(jīng)常夜不歸宿
            • 驅(qū)動(dòng)開發(fā)論壇
            • 厭倦了啤的朋友們,來我們來整點(diǎn)白的...痛痛快快的BSOD也好過隔鞋瘙癢!

            我的朋友

            • Sen的blog
            • IDE方面資深的受害者...經(jīng)常為一個(gè)變量的定義找不著北的痛苦程序員(深表同情)
            • 老羅的blog
            • 良師益友,千年水牛,引擎猛男,分析怪獸,墨鏡酷哥,臺(tái)球高手....

            搜索

            •  

            最新評(píng)論

            国内精品久久国产大陆| 久久精品国产亚洲5555| 国产V综合V亚洲欧美久久| 久久91精品国产91久久麻豆| 久久av高潮av无码av喷吹| 国产成人无码精品久久久性色| 久久亚洲国产欧洲精品一| 热99RE久久精品这里都是精品免费| 久久99国产精品久久99| 久久精品国产99国产精品亚洲| 狠狠久久综合| 国产欧美一区二区久久| 久久久久久久久久久久久久 | 久久夜色精品国产噜噜亚洲AV| 亚洲一区二区三区日本久久九| 久久午夜夜伦鲁鲁片免费无码影视| 婷婷综合久久中文字幕| 久久久老熟女一区二区三区| 无码人妻久久一区二区三区蜜桃| 色综合久久综精品| 久久免费高清视频| 久久精品国产亚洲AV大全| 97精品依人久久久大香线蕉97| 人人狠狠综合久久亚洲高清| 精品综合久久久久久88小说| 久久精品亚洲中文字幕无码麻豆 | 精品久久久久久亚洲精品| 久久综合色老色| 伊人色综合九久久天天蜜桃| 丰满少妇人妻久久久久久4| 久久亚洲欧美日本精品| 久久99精品久久久久久| 久久99精品国产一区二区三区 | 国内精品伊人久久久影院| 久久无码一区二区三区少妇| 久久久久18| 一级做a爰片久久毛片毛片| 伊人 久久 精品| 亚洲精品高清国产一线久久| 色综合久久综合中文综合网| 蜜臀av性久久久久蜜臀aⅴ|