C++回调函数-实操(二)

回调通常通过函数指针、函数对象(仿函数)、Lambda 表达式或者 std::function 来实现。

1、函数指针实现回调

这一方法实现回调比较好记,就记住把函数当作参数传给方法,在方法中调用方法。

复制代码
#include <iostream>

// 回调函数类型
typedef void (*CallbackFunction)(int);

// 使用回调函数的函数
void performCallback(int value, CallbackFunction callback) {
    // 执行某些操作
    std::cout << "Performing operation with value: " << value << std::endl;

    // 调用回调函数
    callback(value * 2);
}

// 回调函数
void callbackFunction(int value) {
    std::cout << "Callback executed with value: " << value << std::endl;
}

int main() {
    performCallback(5, callbackFunction);
    return 0;
}

2、函数对象(仿函数)实现回调

复制代码
#include <iostream>

// 仿函数类
class CallbackClass {
public:
    void operator()(int value) const {
        std::cout << "Callback executed with value: " << value << std::endl;
    }
};

// 使用回调函数对象的函数
void performCallback(int value, const CallbackClass& callback) {
    // 执行某些操作
    std::cout << "Performing operation with value: " << value << std::endl;

    // 调用回调函数对象
    callback(value * 2);
}

int main() {
    CallbackClass callbackObj;
    performCallback(5, callbackObj);
    return 0;
}

3、Lambda 表达式实现回调

复制代码
#include <iostream>

// 使用回调Lambda的函数
void performCallback(int value, const std::function<void(int)>& callback) {
    // 执行某些操作
    std::cout << "Performing operation with value: " << value << std::endl;

    // 调用回调Lambda
    callback(value * 2);
}

int main() {
    // 定义并传递Lambda作为回调
    performCallback(5, [](int value) {
        std::cout << "Callback executed with value: " << value << std::endl;
    });
    return 0;
}

推荐阅读

C++ std::tr1::function和std::tr1::bind模板类介绍,qt测试-CSDN博客

相关推荐
aini_lovee9 分钟前
MATLAB基于小波技术的图像融合实现
开发语言·人工智能·matlab
R1nG86322 分钟前
多线程安全设计 CANN Runtime关键数据结构的锁优化
开发语言·cann
初次见面我叫泰隆23 分钟前
Qt——5、Qt系统相关
开发语言·qt·客户端开发
亓才孓28 分钟前
[Class的应用]获取类的信息
java·开发语言
初願致夕霞29 分钟前
Linux_进程
linux·c++
开开心心就好36 分钟前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender
Never_Satisfied40 分钟前
在JavaScript / HTML中,关于querySelectorAll方法
开发语言·javascript·html
Thera7771 小时前
【Linux C++】彻底解决僵尸进程:waitpid(WNOHANG) 与 SA_NOCLDWAIT
linux·服务器·c++
3GPP仿真实验室1 小时前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd
Wei&Yan1 小时前
数据结构——顺序表(静/动态代码实现)
数据结构·c++·算法·visual studio code