1.什么是回调函数?
回调函数(Callback Function)是指通过参数将一个函数传递给另一个函数,这个函数在特定的时间点或条件满足时被调用。
2.代码实现:
cpp
#include <iostream>
void callback_Fun(int x) {
std::cout << "Callback called with value: " << x << std::endl;
}
void perform_Action(void (*callback)(int), int value) {
callback(value); // 调用回调函数
}
int main() {
perform_Action(callback_Funct, 10);
return 0;
}
3.详细解释:
(1) 回调函数定义
首先,我们定义一个简单的回调函数 callback_Fun
,它接收一个整数参数并输出到控制台。
cpp
void callback_Fun(int x) {
std::cout << "Callback called with value: " << x << std::endl;
}
这里的 callback_Fun
是一个普通的 C++ 函数。这个函数并没有直接被调用,而是等待特定的条件满足时才会被触发。
(2) 接收回调函数的函数 perform_Action
定义了一个名为 perform_Action
的函数,它接收两个参数:
- 一个函数指针
void (*callback)(int)
,用于指定一个符合void(int)
函数签名的回调函数。 - 一个整数参数
value
,将在调用回调函数时传递给它。
cpp
void perform_Action(void (*callback)(int), int value) {
callback(value); // 调用回调函数
}
- 这个函数的作用是:接收一个回调函数
callback
和一个整数value
,然后在函数内部调用callback
,并将value
传递给它。 void (*callback)(int)
指明callback
是一个指向函数的指针,它所指向的函数必须符合void(int)
的签名,即返回类型是void
,接受一个int
参数。
(3) 在 main
函数中传递回调函数
在 main
函数中调用 performAction
,并将 callbackFunction
作为参数传递给它
cpp
int main() {
perform_Action(callback_Fun, 10);
return 0;
}
callbackFunction
作为参数被传递给performAction
。因为callbackFunction
的签名是void(int)
,和performAction
所要求的函数指针类型一致,因此可以直接传递。- 数字
10
作为第二个参数,表示value.
4.执行过程
(1) main
函数调用 perform_Action
:perform_Action
被调用,传入了 callback_Fun
和 10
作为参数。
(2) performAction
函数内部调用回调函数 callback_Fun
:
在 perform_Action
中,执行 callback(value);
这里 callback
指向 callback_Fun
,所以等价callback_Fun(10);
callback_Fun
被调用,并接收到参数 10;
(3)
callback_Fun
执行 :callback_Fun
接收到 10
后,执行 std::cout << "Callback called with value: " << x << std::endl;
,输出 Callback called with value: 10;
(4) perform_Action
结束执行 :回调函数调用结束后,perform_Action
完成其所有逻辑,返回到 main
。
5.总结
这个实现方式的关键点在于:
- 通过将函数指针
callbackFunction
传递给performAction
,实现了函数调用的延迟。 performAction
在合适时机(本例中是立即)调用回调函数,达到分离逻辑的效果,让代码更加灵活和可复用。
这种回调机制非常适合异步编程和事件处理等场景,在事件触发时可以调用预定义的函数。