#include <iostream>
using namespace std;
class Base
{
public:
virtual void func_1()
{
cout<<"it is Base::func_1"<<endl;
}
virtual void func_2()
{
cout<<"it is Base::func_2"<<endl;
}
};
/* 直接调用对应类中的函数 */
typedef void (Base::*FUNC_1)();
/* 直接调用对应的函数 */
typedef void (*FUNC_2)();
int main()
{
Base b;
FUNC_1 pfunc_1 = &Base::func_1;
(b.*pfunc_1)();
FUNC_2 pfunc_2 = (FUNC_2)*(long*)*(long*)(&b);
pfunc_2();
FUNC_2 pfunc_2_1 = (FUNC_2)*((long*)*(long*)(&b)+1);
pfunc_2_1();
system("pause");
return 0;
}
using namespace std;
class Base
{
public:
virtual void func_1()
{
cout<<"it is Base::func_1"<<endl;
}
virtual void func_2()
{
cout<<"it is Base::func_2"<<endl;
}
};
/* 直接调用对应类中的函数 */
typedef void (Base::*FUNC_1)();
/* 直接调用对应的函数 */
typedef void (*FUNC_2)();
int main()
{
Base b;
FUNC_1 pfunc_1 = &Base::func_1;
(b.*pfunc_1)();
FUNC_2 pfunc_2 = (FUNC_2)*(long*)*(long*)(&b);
pfunc_2();
FUNC_2 pfunc_2_1 = (FUNC_2)*((long*)*(long*)(&b)+1);
pfunc_2_1();
long** pfunc = (long**)(&b);
((FUNC_2)*(*pfunc))();
system("pause");
return 0;
}