当前位置: 首页 > news >正文

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;// 调用回调Lambdacallback(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博客

http://www.lryc.cn/news/270487.html

相关文章:

  • MySQL中常用的用户授权操作
  • LabVIEW开发智能火灾自动报警系统
  • Vagrant使用教程
  • 【Java】ThreadLocal原理与使用场景
  • 软件测试/测试开发丨Linux进阶命令(curl、jq)
  • 模式识别与机器学习-SVM(带软间隔的支持向量机)
  • CentOS 7 firewalld+ipset+定时任务防御ssh暴力破解——筑梦之路
  • ElasticSearch的RestClient结合Sniffer提高可用性
  • 【网络面试(2)】DNS原理-域名和IP地址的查询转换
  • 【PHP】函数array_intersect、array_diff:从数组中取出、去除指定的几个键值
  • 【华为机试】2023年真题B卷(python)-冠亚军排名-奖牌榜排名
  • MyBatisPlus之逻辑删除
  • 在macOS中搭建.NET MAUI开发环境
  • [NCTF 2022]calc
  • 【pandas_不重复项计数】
  • 菜鸟学习vue3笔记-vue hooks初体验
  • 81 使用DFS和BFS解机器人的运动范围
  • vue-springboot基于JavaWeb的家装一体化商城平台guptn
  • .NET进阶篇06-async异步、thread多线程2
  • java 方法
  • HarmonyOS 组件通用属性之通用事件 文档参数讲解(点击事件)
  • 毕业设计之开题报告
  • 【数据结构】详细剖析线性表
  • 通过数字证书对PDF电子文件进行数字签名/盖章
  • 2007~2016 年税调经纬度及其所处的省市区县乡镇数据
  • SLAM学习入门--编程语言
  • Go语言程序设计-第6章--方法
  • AI按理说应该最擅长理工,为啥先冲击文艺行业?
  • 蓝牙物联网移动硬件数据传输系统解决方案
  • Linux下Web服务器工作模型及Nginx工作原理详解