news 2026/4/3 4:42:26

指针注册方式实现回调函数-c语言使用回调函数实现封装和多态

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
指针注册方式实现回调函数-c语言使用回调函数实现封装和多态

指针注册方式实现回调函数-c语言使用回调函数实现封装和多态

一、常见回调函数案例
//定义回调函数类型
typedef void(*CallbackFunction)(int);

//回调函数实现
void myCallback(int value) {

std::cout << "my value:" << value << std::endl;
}

//执行回调函数:接受一个回调函数参数
void funcAction(CallbackFunction callback,int value) {
if (callback != NULL) {
callback(value);
}
}


int main() {
funcAction(myCallback, 10);


return 0;

}


二、使用指针注册方式实现回调函数
1.回调函数实现C语言的多态
这种方式实现了c语言的多态。面向对象的多态的实现原理是一样的。

//定义回调函数类型
typedef int(*CallbackFunction)(int a,int b);

typedef struct data_t {
int a;
int b;
CallbackFunction callback;//函数管理器
}op_data;

//注册函数
void Register(op_data *data) {
int reslt = data->callback(data->a, data->b);
std::cout << "result:" << reslt << std::endl;
}

//加法回调函数
int add(int a,int b) {
return a + b;
}

//减法回调函数
int sub(int a, int b) {
return a - b;
}


int main() {
op_data *mydata = (op_data*)malloc(sizeof(op_data));
mydata->a = 10;
mydata->b = 5;

mydata->callback = add;
Register(mydata);


mydata->callback = sub;
Register(mydata);

free(mydata);

return 0;

}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 3:17:16

基于Springboot的智能餐厅管理系统的设计与实现

前言 本研究着重关注智能餐厅管理系统的设计与实现&#xff0c;希望能够解决传统餐厅管理模式所存在的效率与服务方面的问题&#xff0c;随着餐饮行业的迅速发展以及数字化转型需求的不断增加&#xff0c;传统餐厅管理模式已然难以契合现代餐饮服务对于高效化、智能化的要求&am…

作者头像 李华
网站建设 2026/3/31 11:47:35

Linux 命令:patch

概述 patch 命令是补丁应用工具&#xff0c;与 diff 配套使用——diff 生成补丁文件&#xff08;记录文件的增删改差异&#xff09;&#xff0c;patch 读取补丁文件并将差异应用到原始文件&#xff0c;实现文件的快速修改/更新。它是Linux中批量同步文件变更、版本迭代、配置部…

作者头像 李华