
c++ 回调函数的注册与调用学习
结合自己项目的使用:登记注册于调用。
·
源自:C语言 — 函数的注册和回调_c语言 函数注册-CSDN博客
回调函数的使用方法:
定义一个回调函数;
调用者在使用时,保存回调函数的函数指针,称为“注册”;
调用者发现条件满足时,使用函数指针调用回调函数对事件进行处理。
回调可用于通知机制。比如要写一个多线程下载器,显示下载进度时可以将进度值函数设置为函数,线程内部即可处理,非常方便
原文链接:https://blog.csdn.net/moneymyone/article/details/130634488
C++ 【回调函数】详解与代码解读_c++回调函数-CSDN博客
结合自己项目的使用:登记注册于调用
1.单例:
2.注册函数定义:
3.调用注册函数:
4.调用回调函数:
其中:std::function std::bind 是C++11的内容,参考下文博客:
通过 std::function std::bind 添加回调-CSDN博客
摘抄:声明 定义 绑定 ,接着可以像上文的步骤,进行注册以及调用。
补充:为什么要使用回调函数?信号槽其实也是一种回调函数思想
【2期 QT信号与槽函数&回调函数与函数指针】_qt 函数指针-CSDN博客
摘抄:
追加:
2024.07.30
回调函数(callback)是什么?一文理解回调函数(callback)
//回调函数
void callbackFunc(void* result){
printf("processing result: %s\n",(char*)result);
}
void processData(void*data, int len, void(*callback)(void* result)){
void* result = data;
callback(result);
}
int main()
{
//回调函数
char data[] = "hello world";
processData(data, sizeof(data),callbackFunc);
return 0;
}
其中,data 表示要处理的数据,len 表示数据的长度,callback 是一个函数指针,用于指定处理完数据后的回调函数。回调函数的形式如下:
补充:
#include <iostream>
using namespace std;
// 定义回调接口
class CCallback {
public:
virtual void onReminder(int reminderType) = 0;
};
// 智能闹钟类
class SmartAlarm {
public:
SmartAlarm(CCallback* callback) : m_callback(callback) {}
// 触发提醒
void triggerReminder(int type) {
if (m_callback) {
m_callback->onReminder(type); // 通知监听者
}
}
private:
CCallback* m_callback;
};
// 应用程序类,实现了回调接口
class MyApp : public CCallback {
public:
MyApp() {
// 创建智能闹钟实例并注册自己为监听者
m_alarm = new SmartAlarm(this);
}
// 实现回调方法
void onReminder(int type) override {
if (type == 1) {
cout << "Good morning! Playing music..." << endl;
} else if (type == 2) {
cout << "Time for a break! Showing notification..." << endl;
}
}
// 测试触发提醒
void testReminders() {
m_alarm->triggerReminder(1); // 触发早上提醒
m_alarm->triggerReminder(2); // 触发午休提醒
}
private:
SmartAlarm* m_alarm;
};
int main() {
MyApp app;
app.testReminders(); // 测试提醒功能
return 0;
}
更多推荐
所有评论(0)