//情况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的输出请高手帮我解释一下 谢谢
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的输出请高手帮我解释一下 谢谢
虚函数表中保存着函数的指针,你可以看看C++教程中关于虚函数的部分