虚函数表//typedef fun* temp;//是不是多余,该怎么处理
虚函数表//typedef fun* temp;//是不是多余
#include <iostream>
using namespace std;
typedef void (*fun) (void);
typedef fun* temp;
class A {
public:
virtual void foo (void)
{
cout << "A::foo() invoked" << endl;
}
virtual void bar (void)
{
cout << "A::bar() invoked" << endl;
}
};
class B : public A{
public:
void foo (void)
{
cout << "B::foo() invoked" << endl;
}
};
int main()
{
A a;
temp p = *(temp*)&a;
cout << "A::p[0] = " << (void*)p[0] << endl;
(p[0]) ();
cout << "A::p[1] = " << (void*)p[1] << endl;
(p[1]) ();
}
------解决方案--------------------
用 fun *p = *(fun **)&a; 一样的
#include <iostream>
using namespace std;
typedef void (*fun) (void);
typedef fun* temp;
class A {
public:
virtual void foo (void)
{
cout << "A::foo() invoked" << endl;
}
virtual void bar (void)
{
cout << "A::bar() invoked" << endl;
}
};
class B : public A{
public:
void foo (void)
{
cout << "B::foo() invoked" << endl;
}
};
int main()
{
A a;
temp p = *(temp*)&a;
cout << "A::p[0] = " << (void*)p[0] << endl;
(p[0]) ();
cout << "A::p[1] = " << (void*)p[1] << endl;
(p[1]) ();
}
------解决方案--------------------
用 fun *p = *(fun **)&a; 一样的