类中的回调函数要加static的原因

论坛 期权论坛 脚本     
匿名技术用户   2020-12-22 14:31   265   0

作为一名初学者,一直困惑于回调函数在类中为何要加static。在深入浅出MFC中找到答案,留下笔记。

如果一个callback函数是一个类成员函数,就要加上static,原因在于必须舍弃掉类成员函数的隐藏参数this指针 。

比如一个callback函数被要求声明为以下形式:

void CALLBACK function();

如果这个函数在类ObjClass里面,编译器会为其添加一个this指针,用于指向调用该函数的对象。所以编译出来的代码是这种形式:

void CALLBACK ObjClass::function(ObjClass* this);

显然有个this指针,函数参数列表与被要求声明的形式不一致。
但是加上static,就表示该类成员函数属于类所有,舍弃掉this指针。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP