/************************************************************************/
/* 多重继承的虚函数表访问例程 */
/************************************************************************/
#include <iostream>
using namespace std;
class Base1
{
public:
virtual void F()
{
cout << "Base1::F()" << endl;
}
virtual void G()
{
cout << "Base1::G()" << endl;
}
virtual void H()
{
cout << "Base1::H()" << endl;
}
};
class Base2
{
public:
virtual void F()
{
cout << "Base2::F()" << endl;
}
virtual void G()
{
cout << "Base2::G()" << endl;
}
virtual void H()
{
cout << "Base2::H()" << endl;
}
};
class Base3
{
public:
virtual void F()
{
cout << "Base3::F()" << endl;
}
virtual void G()
{
cout << "Base3::G()" << endl;
}
virtual void H()
{
cout << "Base3::H()" << endl;
}
};
class Derive : public Base1, public Base2, public Base3
{
public:
virtual void F()
{
cout << "Derive::F()" << endl;
}
virtual void G1()
{
cout << "Derive::G1()" << endl;
}
};
typedef void (*Func)(void);
void main()
{
Func fun = NULL;
Derive d;
int** pVtab = (int**)&d;
for (int i = 0; i < 3; i++)
{
//Windows平台虚函数表的结束符:NULL
for (int j = 0; pVtab[i][j]; j++)
{
fun = (Func)pVtab[i][j];
fun();
}
}
}
多重继承的虚函数表访问例程
最新推荐文章于 2016-03-18 11:19:27 发布