//情况1
class IStyle
{
virtual voidPrint() = 0;
};class IXStyle : public virtual IStyle
{
public:
virtual voidPrintX() = 0;
};class IYStyle : public virtual IStyle
{
virtual voidPrintY() = 0;
};class MyStyle : public IXStyle,
       public IYStyle
{
public:
virtual voidPrint(){TRACE("\nNULL");}
virtualvoidPrintX(){TRACE("\nX");}
virtualvoidPrintY(){TRACE("\nY");}
};void CNorTestDlg::OnButton3() 
{
int size1 = sizeof(IStyle);   =4
int size2 = sizeof(IXStyle);  =12  不明白
int size3 = sizeof(IYStyle);  =12  不明白
int size4 = sizeof(MyStyle);  =20  更奇怪了
//情况2
class IStyle
{
virtual voidPrint() = 0;
};class IXStyle : public  IStyle
{
public:
virtual voidPrintX() = 0;
};class IYStyle : public  IStyle
{
virtual voidPrintY() = 0;
};class MyStyle : public IXStyle,
       public IYStyle
{
public:
virtual voidPrint(){TRACE("\nNULL");}
virtualvoidPrintX(){TRACE("\nX");}
virtualvoidPrintY(){TRACE("\nY");}
};void CNorTestDlg::OnButton3() 
{
int size1 = sizeof(IStyle);   =4
int size2 = sizeof(IXStyle);  =4  不明白???
int size3 = sizeof(IYStyle);  =4  不明白???
int size4 = sizeof(MyStyle);  =8  更奇怪了???
以上为vc6的输出请高手帮我解释一下  谢谢