#include <iostream.h> class ClassA { public: virtual ~ ClassA(){}; virtual void FunctionA(){}; }; class ClassB { public: virtual void FunctionB(){}; }; class ClassC : public ClassA,public ClassB {public: }; void main(){ ClassC aObject; ClassA* pA=&aObject; ClassB* pB=&aObject; ClassC* pC=&aObject; cout<<pA<<endl; cout<<pB<<endl; cout<<pC<<endl; }
假设aObject的地址是 xxx. 那么: pA=xxx pB=xxx + 4 pC=xxx ClassA里面定义了虚函数,所以会有一个虚函数表指针(4 byte)。ClassA的总大小为4 byte. 同理,ClassB的总大小为4 byte. ClassC从ClassA, ClassB继承来的,在内存中ClassA, ClassB顺序排列。ClassC的总大小为8 byte. “ClassB* pB=&aObject;”这个隐式转换会得到ClassB类的地址。