博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++回调:利用Sink
阅读量:5880 次
发布时间:2019-06-19

本文共 2047 字,大约阅读时间需要 6 分钟。

Sink的本质是利用C++的封装、继承、多态的面向对象来实现,从实现角度来说,更优于函数指针回调;

 

1 // cbBysink.cpp : Defines the entry point for the console application. 2 // 3  4 #include "stdafx.h" 5 #include "cbBysink.h" 6  7 /************************************************************************/ 8 /*                上层回调函数                                            */ 9 /************************************************************************/10 11 class CMyWork : public baseCallBack12 {13 public:14     CMyWork()15     {16         // 注册回调17         CWork::registercallback(this);18     }19     // 回调注册实现20     void CallbackFunction(int a, int b)21     {22         cout << "a = " << a << ",b = " << b << "\n" << endl;23         return;24     }25     // 触发回调26     void makefunction(int a, int b)27     {28         CWork::makecallback(a, b);29         return;30     }31 protected:32 private:33 };34 35 int main(int argc, char* argv[])36 {37     CMyWork c_mywork;38 39     // 触发的时候不需要进行动态注册40     c_mywork.makefunction(5, 6);41     42     return 0;43 }
1 #include 
2 #include
3 using namespace std; 4 /************************************************************************/ 5 /* 下层回调定义 */ 6 /************************************************************************/ 7 8 class baseCallBack 9 {10 public:11 virtual void CallbackFunction(int a, int b){}; // 虚函数,提供上层实现12 protected:13 private:14 };15 16 class CWork17 {18 public:19 static void registercallback(baseCallBack *pbCallback);20 static void makecallback(int a, int b);21 protected:22 private:23 static baseCallBack *m_pbCallback;24 };25 26 baseCallBack *CWork::m_pbCallback = NULL;27 28 // 提供注册函数29 void CWork::registercallback(baseCallBack *pbCallback)30 {31 if (pbCallback != NULL)32 {33 m_pbCallback = pbCallback;34 }35 }36 37 // 提供触发接口38 void CWork::makecallback(int a, int b)39 {40 m_pbCallback->CallbackFunction(a, b);41 }

转载于:https://www.cnblogs.com/davidsguo008/p/3638059.html

你可能感兴趣的文章
2020
查看>>
Docker容器(分享十五)
查看>>
Django如何重设Admin密码
查看>>
【C++基础】 各种“虚”总结(ing...)
查看>>
python 全局变量
查看>>
git学习
查看>>
获取时间代码
查看>>
resolv.conf
查看>>
java redispool测试类保存
查看>>
一种简单的对象赋值方法,定义实例后以{}赋值,比传统方法更简洁
查看>>
C#中的委托和事件
查看>>
Python: 正则表达式
查看>>
android GSM+CDMA基站定位
查看>>
Oracle 获取本周、本月、本季、本年的第一天和最后一天
查看>>
远程通知推送后台代码( PHP 和 java )
查看>>
python(列表及列表的相关操作、元组和range)
查看>>
Linux下编译安装redis
查看>>
ios 开发failed to chmod
查看>>
JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典...
查看>>
JS-制作留言提交系统(支持ctrl+回车)
查看>>