C++笔记之回调函数的演变

news2024/10/5 21:17:23

C++笔记之回调函数的演变

code review!

文章目录

  • C++笔记之回调函数的演变
    • 1.使用函数指针
    • 2.使用typedef加函数指针
    • 3.使用std::using加函数指针
    • 4.使用std::using加std::function
    • 5.使用回调和不使用回调对比

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.使用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;
}

5.使用回调和不使用回调对比

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/857696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅析数字孪生和虚拟仿真的区别与联系

工业数字孪生和虚拟仿真是当今工业领域的两大热门技术&#xff0c;注意我的说法&#xff0c;在“工业领域”&#xff0c;在其他领域可能概念有所不同。 其实工业数字孪生和虚拟仿真做出来的产品很相似&#xff0c;并且很多数字孪生产品也会结合虚拟仿真技术&#xff0c;所以导致…

最好的和解,是陪“内在小孩”一起长大

“为什么我总是很心累&#xff1f;” 经常莫名感到心累、有深深的无力感&#xff0c;是现代成年人的通病。 生活压力大&#xff0c;忙忙碌碌却觉得迷茫、空虚、压抑&#xff1b; 不管怎么努力&#xff0c;好像总是卡在某个地方&#xff0c;得不到升职加薪&#xff1b; 每段感情…

使用注解实现MyBatis映射

文章目录 前言简单语句用注解增加功能更新功能删除功能查询功能 复杂语句用映射查询功能 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 注解实现的最大的好处是简单SQL语句放注解里&#xff0c;映射文件就不用写了 数据库代码&#xff1a; create t…

轻量级Web框架Flask

Flask-SQLAlchemy MySQL是免费开源软件&#xff0c;大家可以自行搜索其官网&#xff08;https://www.MySQL.com/downloads/&#xff09; 测试MySQL是否安装成功 在所有程序中&#xff0c;找到MySQL→MySQL Server 5.6下面的命令行工具&#xff0c;然后单击输入密码后回车&am…

Scratch 之 TurboWarp 常用插件介绍-2

今天带来2篇 TurboWarp 常用插件介绍 什么你还没有 TurboWarp &#xff1f; 快去下载一个吧 TurboWarp&#xff08;简称TW&#xff09; 在线版 | 离线版下载 TurboWarp优点 编译速度快于原版 Scratch 至少10倍拥有自定义帧的功能&#xff08;比如60 FPS&#xff09;造型编…

【网络基础实战之路】基于三个分公司的内网搭建并连接运营商的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS&#xff1a;本要求基于…

云计算——存储虚拟化简介 与 存储模式及方法

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前期回顾 前言 一.存储虚拟化介绍 1.云计算存储基本概念 2.云计算存储模型 3.创…

小米基于 Flink 的实时计算资源治理实践

摘要&#xff1a;本文整理自小米高级软件工程师张蛟&#xff0c;在 Flink Forward Asia 2022 生产实践专场的分享。本篇内容主要分为四个部分&#xff1a; 1. 发展现状与规模 2. 框架层治理实践 3. 平台层治理实践 4. 未来规划与展望 Tips&#xff1a;点击「阅读原文」免费领取…

客户端渲染和服务端渲染的区别

一、客户端渲染 页面的渲染工作都是由浏览器来完成的&#xff0c;服务器只是负责提供数据。前端去后端取数据生成DOM树。 **最少两次请求 ** 第一次请求拿到的是页面第二次请求拿到的是动态数据 二、服务端渲染 页面渲染的工作都是由服务端来完成的&#xff0c;数据也是由服…

# X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系

X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系 很多人对于他们是啥是傻傻分不清的&#xff0c;我做了个表格供大家参考。 摘抄&#xff1a; X11是X Window System Protocol, Version 11&#xff08;RFC1013&#xff09;&#xff0c;是X server和X client之间的通…

Maven进阶1 -- 分模块开发、依赖管理、聚合与继承、属性、版本管理、多环境开发、跳过测试

目录 1.分模块开发 将原始模块按照功能拆分成若干个子模块&#xff0c;方便模块间的相互调用&#xff0c;接口共享。 案例&#xff1a;拆分一下这个SSM整合案例 ①创建maven模块 demo项目下的pom.xml文件&#xff08;主要看一下依赖&#xff09; <dependencies><!…

ApplicationContextInitializer

目录 在何处执行&#xff1f;何时初始化&#xff1f;自己写一个ApplicationContextInitializer 那这个类的设计具体有什么作用呢&#xff1f;&#xff1f;1. DelegatingApplicationContextInitializer2. SharedMetadataReaderFactoryContextInitializer3. ContextIdApplication…

试卷扫描去掉痕迹,这个工具很好用

随着科技的不断发展&#xff0c;试卷扫描越来越普及&#xff0c;成为了现代教育不可或缺的一部分。试卷扫描的优势在于可以快速高效地批改试卷&#xff0c;但试卷上的痕迹往往会干扰扫描的准确性。如果可以扫描试卷并将上面填写的答案内容擦除还可以针对打错的题目重新巩固&…

【Rust】Rust学习 第八章常见集合

Rust 标准库中包含一系列被称为 集合&#xff08;collections&#xff09;的非常有用的数据结构。大部分其他数据类型都代表一个特定的值&#xff0c;不过集合可以包含多个值。不同于内建的数组和元组类型&#xff0c;这些集合指向的数据是储存在堆上的&#xff0c;这意味着数据…

mybatis-flex探索

mybatis古今未来 最近无意之中发现了一个非常棒的持久层框架mybatis-flex&#xff0c;迫不及待研究了一下 发现简直就是我的梦中情框&#xff0c;之前写ibatis&#xff0c;后来写mybatis&#xff0c;接着写mybatis-plus&#xff0c;接着研究mybatis-flex ibatis ibatis是apa…

ssm在线医疗服务系统源码和论文PPT

ssm在线医疗服务系统源码和论文PPT003 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 选题意义、价值和目标&#xff1a; 随着经济的迅速发展,人们对生活水平和身体健康的要…

chatGPT应用于房地产行业

作为 2023 年的房地产专业人士&#xff0c;您无疑认识到技术对行业的重大影响。近年来&#xff0c;一项技术进步席卷了世界——人工智能。人工智能彻底改变了房地产业务的各个方面&#xff0c;从简化管理任务到增强客户互动。 在本文中&#xff0c;我们将探讨几种巧妙的人工智…

工业互联网发展在即 博晨(BOCHEN)攻克“卡脖子”难题

5G时代的到来&#xff0c;正在悄然掀起一场智能化技术改革的风暴。工业互联网未来一定要走向制造智能化&#xff0c;这可能是我们未来工业互联网推动工业系统新生态的核心问题。”中国电子信息行业联合会专家委员会主任董云庭就曾表示。目前&#xff0c;工业互联网已经覆盖至国…

DC电源模块在工业控制器中的重要性

BOSHIDA DC电源模块在工业控制器中的重要性 DC电源模块在工业控制器中起着非常重要的作用&#xff0c;它是实现工业控制器运转所必需的组成部分。 DC电源模块主要用于将交流电转换成直流电供给工业控制器中的各个部件&#xff0c;包括控制器内部的微处理器、传感器、执行器等等…

【C++】五分钟带你搞懂深浅拷贝

目录 拷贝函数 浅拷贝拷贝构造函数 深拷贝拷贝构造函数 总结 前言 前面我们学习了C的一些基本的知识点&#xff0c;并且介绍了一些STL里面String的一些关键操作&#xff0c;除了这些博主还新开了一个专栏关于Linux的讲解&#xff08;Linux专栏链接&#xff09;大家可以关注…