-
什么是回调函数?
–被当作参数传递的函数,叫回调函数 -
术语“注册”是什么意思?
–回调函数A 被传参到某个函数B,叫做:在函数B注册了A -
为什么要用类型别名
–回调函数传参时,写起来太长了,用typedef缩短点 -
为什么回调函数是函数指针的形式
–这是某种常见的代码风格,将回调函数声明为指针,有利于回调函数与普通函数作区分
示例代码
#include <iostream>
// 回调函数的类型
typedef void (*CallbackType)(void*);
// 模拟网络库
void simulateNetworkDisconnect(CallbackType callback, void* userData) {
std::cout << "Simulating network disconnection..." << std::endl;
// 调用注册的回调函数
if (callback != nullptr) {
callback(userData);
}
}
// 实际的回调函数
void myCallback(void* arg) {
std::cout << "Callback called with argument: " << arg << std::endl;
}
int main() {
// 在 C++ 中,通常需要使用 & 来获取函数的地址
simulateNetworkDisconnect(&myCallback, (void*)0x12345678);
return 0;
}