C/C++教程

C++细节问题记录

本文主要是介绍C++细节问题记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

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

void CALLBACK function();

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

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

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

这篇关于C++细节问题记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!