C++笔记之回调函数的演变
code review!
文章目录
- C++笔记之回调函数的演变
- 1.使用函数指针
- 2.使用typedef加函数指针
- 3.使用std::using加函数指针
- 4.使用typedef加std::function
- 5.使用std::using加std::function
- 6.使用回调和不使用回调对比
1.使用函数指针
代码
#include <iostream>// 定义函数,用于演示回调函数的使用
void performOperation(int data, void (*callback)(int)) {// 执行某些操作std::cout << "Performing operation on data: " << data << std::endl;// 调用回调函数callback(data);
}// 定义回调函数,用于接收操作结果并输出到控制台
void handleResult(int result) {std::cout << "Result: " << result << std::endl;
}int main() {// 调用 performOperation 函数,并传递函数指针作为参数performOperation(100, handleResult);return 0;
}
2.使用typedef加函数指针
代码
#include <iostream>// 定义函数指针类型
typedef void (*CallbackFunction)(int);// 定义一个函数,用于演示回调函数的使用
void performOperation(int data, CallbackFunction callback) {// 执行某些操作std::cout << "Performing operation on data: " << data << std::endl;// 调用回调函数callback(data);
}// 定义一个回调函数,用于接收操作结果并输出到控制台
void handleResult(int result) {std::cout << "Result: " << result << std::endl;
}int main() {// 定义函数指针变量,指向 handleResult 函数CallbackFunction callbackPtr = handleResult;// 调用 performOperation 函数,并传递函数指针作为参数performOperation(100, callbackPtr);return 0;
}
3.使用std::using加函数指针
代码
#include <iostream>// 定义函数指针类型
using CallbackFunction = void (*)(int);// 定义一个函数,用于演示回调函数的使用
void performOperation(int data, CallbackFunction callback) {// 执行某些操作std::cout << "Performing operation on data: " << data << std::endl;// 调用回调函数callback(data);
}// 定义一个回调函数,用于接收操作结果并输出到控制台
void handleResult(int result) {std::cout << "Result: " << result << std::endl;
}int main() {// 定义函数指针变量,指向 handleResult 函数CallbackFunction callbackPtr = handleResult;// 调用 performOperation 函数,并传递函数指针作为参数performOperation(100, callbackPtr);return 0;
}
4.使用typedef加std::function
代码
#include <functional>
#include <iostream>// 定义回调函数类型
typedef std::function<void(int)> CallbackFunction;// 定义一个函数,用于演示回调函数的使用
void performOperation(int data, CallbackFunction callback) {// 执行某些操作std::cout << "Performing operation on data: " << data << std::endl;// 调用回调函数callback(data);
}// 定义一个回调函数,用于接收操作结果并输出到控制台
void handleResult(int result) {std::cout << "Result: " << result << std::endl;
}int main() {// 定义回调函数变量,指向 handleResult 函数CallbackFunction callbackFunc = handleResult;// 调用 performOperation 函数,并传递回调函数作为参数performOperation(100, callbackFunc);return 0;
}
5.使用std::using加std::function
代码
#include <functional>
#include <iostream>// 定义一个回调函数类型
using Callback = std::function<void(int)>;// 定义一个函数,用于演示回调函数的使用
void performOperation(int data, Callback callback) {// 执行某些操作std::cout << "Performing operation on data: " << data << std::endl;// 调用回调函数callback(data);
}// 定义一个回调函数,用于接收操作结果并输出到控制台
void handleResult(int result) {std::cout << "Result: " << result << std::endl;
}int main() {// 调用performOperation函数,并传递一个回调函数作为参数performOperation(100, handleResult);return 0;
}