1.多重繼承下的對(duì)象布局
#include <iostream>
using namespace std;
class A{
    
public:
        
virtual void fnA(){cout<<"A."<<endl;}
}
;

class B{
    
public:
        
virtual void fnB(){cout<<"B."<<endl;}
}
;

class C:public A,public B{
    
public:
        
void fnA(){cout<<"fnA->C."<<endl;A::fnA();}
        
void fnB(){cout<<"fnB->C."<<endl;B::fnB();}
}
;

int main(){
    C 
*pC=new C();
    cout
<<pC<<endl;
    pC
->fnA();
    pC
->fnB();
    B 
*pB=pC;
    cout
<<pB<<endl;
    pB
->fnB();
    A 
*pA=pC;
    pA
->fnA();
    cout
<<pA<<endl;

    delete pC;

    
return 0;
}


2.基類的析構(gòu)函數(shù)
#include <iostream>
using namespace std;

class A{
    
public:
        A()
{cout<<"A()."<<endl;}
        
~A(){cout<<"~A()."<<endl;}
}
;

class B:public A{
    
public:
        B()
{cout<<"B()."<<endl;}
        
~B(){cout<<"~B()."<<endl;}
}
;

int main(){
    A 
*p=new B(); //基類沒有將析構(gòu)函數(shù)聲明為虛擬,則最后并不會(huì)調(diào)用子類的析構(gòu)函數(shù)
    delete p;
    
return 0;
}


暫時(shí)只實(shí)現(xiàn)了這個(gè)簡(jiǎn)單的Demo,等拿到《深度探索C++對(duì)象模型》再仔細(xì)弄下 ..~

一個(gè)很簡(jiǎn)單的碼 ..~ 這個(gè)碼是在VC6.0中運(yùn)行的 所以不符合現(xiàn)在的標(biāo)準(zhǔn)
#include <iostream.h>

class Point
{
public:
    
virtual void output()
    
{
        cout
<<"調(diào)用了基類的output()函數(shù).";
    }

    
    
void cjp()
    

        
this->output();

    }

}
;

class test:public Point
{
public:
    
void output ()
    
{
        cout
<<"調(diào)用了派生類的output函數(shù)。";
    }

}
;

int main()
{
    test tt;
    tt.cjp();
    
return 0;
}
//endof main() 

如果這里基類的output不是virtual function 運(yùn)行時(shí)這個(gè)this 對(duì)象就是基類的指針
... 加了就是運(yùn)行派生類的output