请教关于 vtable的问题
有这样的类:
class ZFF
{
public:
virtual void fff() = 0;
};
class ZFather1 : public ZFF
{
public:
virtual void fun1() = 0;
};
class ZFather2 : public ZFF
{
public:
virtual void fun2() = 0;
};
class ZSon : public ZFather1,public ZFather2
{
public:
virtual void fff()
{
TRACE("\n fff in ZSon");
}
virtual void fun1()
{
TRACE("\n fun1 in ZSon");
}
virtual void fun2()
{
TRACE("\n fun2 in ZSon");
}
};
在ZSon* ps = new ZSon;后发现ZSon有两个vtable地址,而且这两个vtable中所包含的fff()函数的地址
值是不一样的,请问是否存在两份fun()的实现,用vc查看时在第2个vtable中有thunk字样的东西,请问
那是什么,谢谢!!!
我对vtable不是很清楚,请问他是怎么被构造出来的,或者哪有这方面的资料,谢谢!!!