#include
using namespace std;
class Base
{
public:
virtual void fun1()
{
cout << Base::fun1() << endl;
}
virtual void fun2()
{
cout << Base::fun2() << endl;
}
};
class Son : public Base
{
public:
void fun1()
{
cout << Son::fun1() << endl;
}
};
void Deal(int *p)
{
typedef void(*Pfun)();//函數指針。
//再次記住每張虛表後面的結束符是0(NULL)。
for (int i = 0; p[i] != NULL; i++)
{
Pfun fun = (Pfun)p[i];
fun();
}
}
void test()
{
Base b;
Son s;
int *p = (int *)*((int *)(&b));//此處是虛表的地址。
Deal(p);//將虛表地址傳入。
}
int main()
{
test();
return 0;
}