C++回调函数精解:基础使用和高级技巧一网打尽
概述:C++回调函数提供了灵活的编程方式。基础使用演示了如何定义和调用简单的回调,而高级使用则展示了返回值非 `void` 的回调和Lambda表达式的灵活性。这种机制使程序更模块化、可维护。
在C++中,回调函数可以用于实现基础和高级的功能。以下是一个包含基础和高级用法的例子,演示如何定义和使用回调函数。
基础使用:
#include <iostream>
#include <functional>
// 定义回调函数类型
using BasicCallback = std::function<void(int)>;
// 基础回调函数
void basicCallbackFunction(int result) {
std::cout << "基础回调函数被调用,结果为: " << result << std::endl;
}
// 函数接受基础回调函数作为参数
void performBasicOperation(int data, BasicCallback callback) {
std::cout << "执行基础操作,数据为: " << data << std::endl;
// 调用基础回调函数
callback(data);
}
int main() {
// 使用基础回调函数作为参数调用函数
performBasicOperation(42, basicCallbackFunction);
return 0;
}
高级使用:
#include <iostream>
#include <functional>
// 定义高级回调函数类型
using AdvancedCallback = std::function<int(int)>;
// 高级回调函数
int advancedCallbackFunction(int result) {
std::cout << "高级回调函数被调用,结果为: " << result << std::endl;
return result * 2;
}
// 函数接受高级回调函数作为参数
void performAdvancedOperation(int data, AdvancedCallback callback) {
std::cout << "执行高级操作,数据为: " << data << std::endl;
// 调用高级回调函数并获取结果
int result = callback(data);
std::cout << "高级操作的结果为: " << result << std::endl;
}
int main() {
// 使用高级回调函数作为参数调用函数
performAdvancedOperation(42, advancedCallbackFunction);
// 使用Lambda表达式作为高级回调函数
performAdvancedOperation(99, [](int result) {
std::cout << "Lambda高级回调函数被调用,结果为: " << result << std::endl;
return result * 3;
});
return 0;
}
在这个例子中,基础使用演示了如何定义和使用一个简单的回调函数。而高级使用展示了如何定义返回值非 void 的回调函数,并且使用Lambda表达式作为一种更灵活的回调方式。在高级例子中,回调函数不仅被调用,还返回了一个结果,进一步扩展了回调的灵活性。