65,208
社区成员
发帖
与我相关
我的任务
分享
class A
{
int a;
};
class B:virtual public A
{
int b;
};
class C:virtual public A
{
int c;
};
class D:public B,public C
{
int d;
};
class Base {
public:
virtual void f() { cout << "Base::f" << endl; }
virtual void g() { cout << "Base::g" << endl; }
virtual void h() { cout << "Base::h" << endl; }
};
typedef void(*Fun)(void);
Base b;
Fun pFun = NULL;
// 调用虚函数f
pFun = (Fun)*((int*)*(int*)(&b)+0);
pFun();
// 调用虚函数g
pFun = (Fun)*((int*)*(int*)(&b)+1);
pFun();
// 调用虚函数h
pFun = (Fun)*((int*)*(int*)(&b)+2);
pFun();
class Derive : public Base
{
virtual void f() { cout << "Derive::f" << endl; }
virtual void g1() { cout << "Derive::g1" << endl; }
virtual void h1() { cout << "Derive::h1" << endl; }
};
