c++ callback
时间: 2023-10-18 17:20:11 浏览: 229
Callback(回调函数)是一种常见的编程技术,它允许一个函数作为参数传递给另一个函数,以便在某个事件发生时被调用。在 C++ 中,回调函数可以使用函数指针或函数对象实现。
使用函数指针实现回调函数的示例代码如下:
```cpp
#include <iostream>
using namespace std;
void callback(int val) {
cout << "Callback function called with value: " << val << endl;
}
void doSomething(int val, void (*func)(int)) {
cout << "Doing something with value: " << val << endl;
func(val);
}
int main() {
doSomething(42, callback);
return 0;
}
```
上述代码中,`doSomething` 函数接收一个整数和一个指向回调函数的函数指针。在函数内部,该整数被处理并传递给回调函数。在主函数中,我们调用 `doSomething` 函数并传递一个回调函数 `callback`。
另一种实现回调函数的方法是使用函数对象。这种方法比使用函数指针更加灵活,因为函数对象可以存储状态并支持函数重载。下面是使用函数对象实现回调函数的示例代码:
```cpp
#include <iostream>
using namespace std;
class Callback {
public:
void operator()(int val) const {
cout << "Callback functor called with value: " << val << endl;
}
};
void doSomething(int val, const Callback& func) {
cout << "Doing something with value: " << val << endl;
func(val);
}
int main() {
Callback callback;
doSomething(42, callback);
return 0;
}
```
在上述代码中,我们定义了一个 `Callback` 类,它重载了函数调用运算符。`doSomething` 函数接收一个整数和一个 `Callback` 对象作为参数。在函数内部,整数被处理并传递给回调函数对象。在主函数中,我们创建一个 `Callback` 对象并将其传递给 `doSomething` 函数。
无论是使用函数指针还是函数对象,回调函数都是一种非常有用的技术,可以让程序在特定事件发生时执行特定的操作。
阅读全文