函数指针与成员函数指针-C++委托

来源:互联网 发布:已连接的udp端口 编辑:程序博客网 时间:2024/05/17 20:33

函数指针与成员函数指针-C++委托

函数指针的实现很简单,它们只是“代码指针(code pointer)”,它们体现在汇编语言中是用来保存子程序代码的首地址,而这种函数指针的存在只是为了保证使用了正确的调用规范。标准C++中没有真正的面向对象的函数指针。这一点对C++来说是不幸的,因为面向对象的指针(也叫做“闭包(closure)”或“委托(delegate)”)在一些语言中已经证明了它宝贵的价值。但是C++提供了成员函数指针(member function pointers)。下面我们可以根据代码来分析函数指针与成员函数指针实际使用。

#include <vector>#include <iostream>using namespace std;typedef void (*pf_funcptr)(char *);pf_funcptr pf_func_ptr;void some_func(char* str){printf("%s\n", str);}class ObserverObject{public:virtual ~ObserverObject() {}void some_member_func(char* str){printf("%s\n", str);}};typedef void (ObserverObject::*funcls)(char*);funcls pf_member_func;int _tmain(int argc, _TCHAR* argv[]){pf_func_ptr = some_func;(*pf_func_ptr)("func point");//funcls my_memfunc_ptr;//my_memfunc_ptr = &ObserverObject::some_member_func;pf_member_func = &ObserverObject::some_member_func;ObserverObject *obj = new ObserverObject;(obj->*pf_member_func)("member func");//(obj->*my_memfunc_ptr)();getchar();return 0;}


原创粉丝点击