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;
}