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博客

相关推荐
WPG大大通3 分钟前
基于DIODES AP43781+PI3USB31531+PI3DPX1207C的USB-C PD& Video 之全功能显示器连接端口方案
c语言·开发语言·计算机外设·开发板·电源·大大通
从以前17 分钟前
【算法题解】Bindian 山丘信号问题(E. Bindian Signaling)
开发语言·python·算法
high201139 分钟前
【Java 基础】-- ArrayList 和 Linkedlist
java·开发语言
1nullptr42 分钟前
lua和C API库一些记录
开发语言·lua
Jerry Nan44 分钟前
Lua元表
开发语言·lua
?333331 小时前
CTFHub Web进阶-PHP-Bypass disable_function攻略
开发语言·安全·web安全·php
所以经济危机就是没有新技术拉动增长了1 小时前
二、javascript的进阶知识
开发语言·javascript·ecmascript
Bubluu1 小时前
浏览器点击视频裁剪当前帧,然后粘贴到页面
开发语言·javascript·音视频
羑悻的小杀马特1 小时前
【AIGC篇】畅谈游戏开发设计中AIGC所发挥的不可或缺的作用
c++·人工智能·aigc·游戏开发