这代码有问题吧,我看根本无法运行。只知道第一个:
typedef void (__stdcall *PFUNC)();
定义函数指针PFUNC,对应的函数签名是,无参数,返回值为void后面看不明白,而且new了个A的对象,却没有delete。

解决方案 »

  1.   

    我只会点点~
    类型转换~空指针与PFUNC pFunc=(PFUNC)*(unsigned int*)pThis;
    先讲指针pThis转换为(unsigned int*)无符号整型指针 然后指针取址后转换赋值为PFUNC类型
    ...
    略,
      

  2.   

    typedef void (__stdcall *PFUNC)(); 是声明一个函数指针类型,该指针指向的是一个返回和参数均为void的函数,
    代码是错误的,PFUNC pFunc=(PFUNC)*(unsigned int*)pThis;强制把A对象转换为PFUNC类型,然后以为该A对象指针指向的东西是其display函数,即pFunc = (PFUNC)*(unsigned int*)pFunc的用意,然后执行pFunc(); 以为能执行A::display,编写者犯了一个常识性错误,类的成员函数并不是作为数据包含在类对象的内存空间,new一个A对象,new出来的内存里面只包含A的成员数据,并不包含成员函数,因此不能达到目的。
    加一个成员数据,PFUNC类型的指针,才能达到此目的:#include <iostream> 
    using namespace std; 
    typedef void (__stdcall *PFUNC)();//**********************解释 void display() 

    cout <<"In Class A" <<endl; 
    }class A 

    public: 
    PFUNC p;
    A(){p = (PFUNC)display;}
    }; int main() 

    void* pThis=new A(); 
    PFUNC pFunc=(PFUNC)*(unsigned int*)pThis;//*********************************解释 
    pFunc(); 
    return 1; 
    }
    运行结果:In Class A,但是很遗憾,diaplay必须作为全局函数,不能作为A的成员函数。