#include <iostream>
class A
{
public:
virtual void f()
{
std::cout << "A::f()" << std::endl;
}
virtual void g()
{
std::cout << "A::g()" << std::endl;
}
virtual void h()
{
std::cout << "A::h()" << std::endl;
}
};
class B: public A
{
public:
virtual void f1()
{
std::cout << "B::f1()" << std::endl;
}
virtual void g1()
{
std::cout << "B::g1()" << std::endl;
}
virtual void h1()
{
std::cout << "B::h1()" << std::endl;
}
};
typedef void(*Fun)(void);
int main()
{
B b;
Fun f = (Fun)*((int*)*(int*)(&b)); (*f)(); //A::f()
Fun g = (Fun)*((int*)*(int*)(&b)+1); (*g)(); //A::g()
Fun h = (Fun)*((int*)*(int*)(&b)+2); (*h)(); //A::h()
Fun f1 = (Fun)*((int*)*(int*)(&b)+3); (*f1)(); //B::f()
Fun g1 = (Fun)*((int*)*(int*)(&b)+4); (*g1)(); //B::g()
Fun h1 = (Fun)*((int*)*(int*)(&b)+5); (*h1)(); //B::h()
system("pause");
return 0;
}
多态虚函数表
最新推荐文章于 2012-10-20 10:29:21 发布