c++回调函数
时间: 2023-06-30 11:24:30 浏览: 132
C++中的回调函数是指将一个函数作为参数传递给另一个函数,以便在需要的时候调用该函数。回调函数通常用于事件处理或异步编程中。
以下是一个简单的回调函数示例:
```c++
#include <iostream>
void printResult(int result) {
std::cout << "Result: " << result << std::endl;
}
void calculate(int x, int y, void (*callback)(int)) {
int result = x + y;
callback(result);
}
int main() {
calculate(5, 7, printResult);
return 0;
}
```
在上面的示例中,`calculate()`函数接受两个整数和一个函数指针作为参数。它计算这两个整数的和,并将结果传递给回调函数。`printResult()`函数被传递给`calculate()`函数作为回调函数。当`calculate()`函数计算出结果后,它调用回调函数`printResult()`来打印结果。
此外,C++11引入了`std::function`和`std::bind`,它们可以更方便地使用回调函数。例如:
```c++
#include <iostream>
#include <functional>
void printResult(int result) {
std::cout << "Result: " << result << std::endl;
}
void calculate(int x, int y, std::function<void(int)> callback) {
int result = x + y;
callback(result);
}
int main() {
auto f = std::bind(printResult, std::placeholders::_1);
calculate(5, 7, f);
return 0;
}
```
在这个示例中,`calculate()`函数接受两个整数和一个`std::function`对象作为参数。`std::function`对象包装回调函数`printResult()`,并将其传递给`calculate()`函数。`std::bind`函数用于将回调函数绑定到要传递的参数上。最后,`f`对象被传递给`calculate()`函数作为回调函数。
阅读全文