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

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

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【笔试训练】统计回文

一、单选 1、以下代码结果是什么&#xff08;&#xff09; public class foo {public static void main(String sgf[]) {StringBuffer anew StringBuffer("A");StringBuffer bnew StringBuffer("B");operate(a,b);System.out.println(a"."b);}st…

ffmpeg+intel核显实现硬解码

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、前言二、检查方法1.图形法2.nvidia-smi3.intel-gpu-tools 三、安装使用1.libva-dev2.libva-utils3.编译安装4.测试1.vainfo2.ffmpeg测试解码 总结 前言 之…

nuxt.js框架使用

1、这种框架只要页面有一个地方错&#xff0c;都会出现404或者吓人的报错界面。 如表单的prop属性&#xff0c;在data函数return对象里面该字段找不到或者不一致&#xff0c;就会报404。 2、使用字典&#xff0c;对字典进行翻译。 在plugins/methods.js文件里面&#xff0c;加…

电脑连接安卓设备显示offline

The Android is offline. This can be resolved by physically disconnecting and...用USB线连接手机和电脑&#xff0c;打开cmd&#xff0c;输入adb devices -l, adb devices -l结果显示可以识别手机&#xff0c;但是状态为offline 打开另外一个终端&#xff0c;输入 adb k…

Spring MVC程序开发

目录 1. 什么是Spring MVC? 1.1 什么是MVC 1.2 MVC和Spring MVC 的关系 1.3 为什么要学Spring MVC? 2. Spring MVC的使用 2.1 Spring MVC的创建和连接 2.1.1 项目创建 2.1.2 项目连接 2.1.2.1 连接 2.1.2.2 RequestMapping注解介绍 2.1.2.3 GetMapping和 PostMapping 2.2 获取…

EFLFK——ELK日志分析系统+kafka+filebeat架构

环境准备 node1节点192.168.40.16elasticsearch2c/4Gnode2节点192.168.40.17elasticsearch2c/4GApache节点192.168.40.170logstash/Apache/kibana2c/4Gfilebeat节点192.168.40.20filebeat2c/4G https://blog.csdn.net/m0_57554344/article/details/132059066?spm1001.2014.30…

【生成式AI】ProlificDreamer论文阅读

ProlificDreamer 论文阅读 Project指路&#xff1a;https://ml.cs.tsinghua.edu.cn/prolificdreamer/ 论文简介&#xff1a;截止2023/8/10&#xff0c;text-to-3D的baseline SOTA&#xff0c;提出了VSD优化方法 前置芝士:text-to-3D任务简介 text-to-3D Problem text-to-3D…

实例035 动画形式的程序界面

实例说明 在很多的程序界面中&#xff0c;都是以菜单或工具栏的形式显示窗体界面&#xff0c;这种显示方式是以静止状态显示的&#xff0c;界面不够生动。下面介绍一个以动画显示窗体界面的设计方法。运行本例&#xff0c;效果如图1.35所示。 技术要点 在该实例中用到了Micr…

配置nginx服务端口时-在同一个页面中打开多个地址端口-查看服务情况

1&#xff1a;把代码保存到xxx.html文件中 2&#xff1a;因为一个个端口打开查看&#xff0c;实在太麻烦了 3&#xff1a;在一个页面中查看多页的响应才能提高测试效率 <html><head><title>本地连接列表</title> </head><body><cente…

Java课题笔记~ HTTP协议(请求和响应)

Servlet最主要的作用就是处理客户端请求&#xff0c;并向客户端做出响应。为此&#xff0c;针对Servlet的每次请求&#xff0c;Web服务器在调用service()方法之前&#xff0c;都会创建两个对象 分别是HttpServletRequest和HttpServletResponse。 其中HttpServletRequest用于封…

shapely库的用法,高效处理点、线、面的几何关系和相关延申(GeoPandas 库)python

1、shapely库的基本用法 Shapely 是一个用于处理几何对象的 Python 库&#xff0c;它提供了各种函数和方法来进行空间分析和几何计算。下面是一些 Shapely 库的常见用法示例&#xff1a; 1. 创建几何对象&#xff1a; from shapely.geometry import Point, LineString, Poly…

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二)

CustomPaint 使用实例和代码&#xff1a; 1.canvas.drawColor 绘制背景颜色 class MyPainter1 extends CustomPainter {overridevoid paint(Canvas canvas, Size size) {//绘制背景颜色&#xff0c;整个UI 现在就是红色的canvas.drawColor(Colors.red, BlendMode.srcATop);}…

Maven安装与配置

目录 一、Maven简介1.1 概述1.2 作用1.3 仓库 二、安装三、配置3.1 配置环境变量3.2 环境变量测试3.3 配置仓库 一、Maven简介 1.1 概述 Maven是一个开源的项目管理工具&#xff0c;用于构建和管理Java项目&#xff0c;基于项目对象模型&#xff08;POM&#xff09;的概念。它…

数据库优化脚本执行报错

目录 一、执行数据库优化脚本 报错... 3 解决方法&#xff1a;... 4 1、直接注释掉RECYCLE_POOLS 赋值sql语句块... 4 2、手动修改脚本... 5 附录... 6 一、执行数据库优化脚本 报错 AutoParaAdj3.5_dm8.sql 1&#xff09;manager中报错 -20001: 执行失败, -7065 数据未…

青大数据结构【2015】

一、单选 二、简答 5.如果一组关键字&#xff0c;以不同的次序输入后建立起来的二叉排序树是否相同&#xff1f;当中序遍历这些二叉排序树时&#xff0c;其遍历的结果是否相同&#xff1f;为什么&#xff1f; 不同&#xff0c;因为输入次序不同&#xff0c;所放置的位置与上一…

Stable Diffusion - 俯视 (from below) 拍摄的人物图像 LoRA 与配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132192139 图像来自 哥特风格 LoRA 俯视 LoRA&#xff0c;提升视觉冲击力&#xff0c;核心配置 <lora:view_from_below:0.6>,(from below,…

时间复杂度与空间复杂度的详解

目录 1.时间复杂度 2.时间复杂度计算例题 3.空间复杂度 1.时间复杂度 算法中的基本操作的执行次数&#xff0c;为算法的时间复杂度。 如何表达 时间复杂度&#xff1f; 大O的渐进表示法 实际中我们计算时间复杂度时&#xff0c;我们其实并不一定要计算精确的执行次数&#xf…

nginx基于源码安装的方式对静态页面、虚拟主机(IP、端口、域名)和日志文件进行配置

一.静态页面 1.更改页面内容 2.更改配置文件 3.测试 二.虚拟主机配置 1.基于IP &#xff08;1&#xff09;在html目录下新建目录存放测试文件 &#xff08;2&#xff09;修改nginx.conf文件&#xff0c;在htttp模块中配置两个server模块分别对应两个IP &#xff08;3&am…

外部节点访问 k8s 集群内的 starrocks

问题描述 用kubeadm在虚拟机搭建了k8s&#xff0c;按starrocks官网步骤&#xff0c;用k8s部署了starrocks 部署成功&#xff1a; 在 k8s集群内节点访问到 sr&#xff1a;&#xff08;通过 clusterIP &#xff09; mysql -h 10.97.182.109 -uroot -P 9030 k8s 节点内访问成功…

创建CREATE_STAT_TABLE 统计信息表在达梦和oracle中的使用

达梦 创建CREATE_STAT_TABLE 统计信息表 PROCEDURE CREATE_STAT_TABLE ( STATOWN VARCHAR(128), STATTAB VARCHAR(128), TABLESPACE VARCHAR(128) DEFAULT NULL, GLOBAL_TEMPORARY BOOLEAN DEFAULT FALSE ); 创建普通表的对应系统表的列名字段包括以下&#xff1a; OWNER TABL…