您当前的位置: 首页 >  c++

令狐掌门

暂无认证

  • 0浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++类成员做回调函数时为什么要用static声明

令狐掌门 发布时间:2021-04-04 19:28:35 ,浏览量:0

问题:C++ 类成员做回调函数时为什么要用static声明?

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

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

void CALLBACK function(); 

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

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

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

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0442s