您的位置:首页 > 其它

代表类成员函数类型的函数指针类型

2018-01-24 14:59 246 查看
以前一直以为函数指针类型就是只有这种样式的,即

void (*PFUN_SAVE)(void*);

那么PFUN_SAVE就是可以表示void fun(void*param),void get(void*param)这种实际的函数,PFUN_SAVE pFn = &(fun),pFn = &(get);

但是,对于类成员函数,由于编译器在编译时会将函数的参数默认加上this参数,同时将其改为全局函数类型,即

void MyClass::Save(void* param);会变成void SaveMyClass(MyClass* this, void* param);

那么像PFUN_SAVE就不能用来保存MyClass的Save函数的地址了。

今天,在看别人的代码是看到了一个用来表示成员函数的函数指针类型,写法也很简单,如下

void (MyClass::*PFUN_SAVE)(void*);

即可用来保存一个对象的成员函数了

PFUN_SAVE saveFun = &(obj.Save);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: