博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ 回调函数使用
阅读量:5820 次
发布时间:2019-06-18

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

普通回调

#include
void printWelcome(int len) { printf("welcome -- %d\n", len); } void printGoodbye(int len) { printf("byebye-- %d\n", len); } void callback(int times, void (* print)(int)) { int i; for (i = 0; i < times; ++i) { print(i); } printf("\n welcome or byebye !\n"); } void main(void) { callback(10, printWelcome); callback(10, printGoodbye); }

类成员函数回调

#include 
#include
using namespace std; using namespace std::placeholders; typedef std::function
Fun; class B{ public: void call(int a,Fun f) { f(a,2); } }; class Test{ public: void callback(int a,int b) { cout<
<<"+"<<<"="<
<

bind函数

一般常用语法是: newFunName=bind(oldFunName,arg_list);

bind函数返回一个新的函数对象。其中bind第一个参数是oldFunName,它是待绑定的函数名,arg_list是oldFunName的参数列表。注意,这个参数列表是旧函数的参数列表,前面提到,返回的是子函数。我们可以随便给子函数定几个参数,但是肯定不能多于bind所绑定的原函数的参数个数。举个例子:
//g是一个有两个参数的可调用对象  auto g=bind(f,a,b,_2,c,_1);  //其中f是具有5个参数的函数  //当我们调用g(x,y)时,实际调用的是f(a,b,y,c,x)

上面出现的_1,_2是它的占位符,bind最多可以使用9个占位符。这个占位符命名在std的placeholders中,使用时,要使用using std::placeholders.

function函数

function是一个函数对象的“容器”。

如function<int(int,int)> fun;  fun是一个函数模板,可以接受两个int型参数,并返回一个int型参数。平时可以将它赋值给一个函数指针。

又一个栗子

#include 
#include
using namespace std; typedef std::function
fp; void g_fun() { cout<<"g_fun()"<
fpi; //对于参数要使用占位符 std::placeholders::_1 fpi f=std::bind(&A::A_fun_int,this,std::placeholders::_1); f(5); } }; int main() { //绑定到全局函数 fp f2=fp(&g_fun); f2(); //绑定到类静态成员函数 fp f1=fp(&A::A_fun_static); f1(); A().init(); A().init2(); return 0; }
本文转自 jiu~ 博客园博客,原文链接:http://www.cnblogs.com/jiu0821/p/8464605.html,如需转载请自行联系原作者
你可能感兴趣的文章
使用《Deep Image Prior》来做图像复原
查看>>
Linux基础命令---rmdir
查看>>
iOS sqlite3(数据库)
查看>>
粤出"飞龙",打造新制造广东样本
查看>>
编玩边学获数千万元A轮融资,投资方为君联资本
查看>>
蓝图(Blueprint)详解
查看>>
Spark之SQL解析(源码阅读十)
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
BigDecimal 舍入模式(Rounding mode)介绍
查看>>
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
开源 免费 java CMS - FreeCMS1.9 移动APP生成栏目列表数据
查看>>
虚拟机新增加硬盘,不用重启读到新加的硬盘
查看>>
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
DHCP中继数据包互联网周游记
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>