当前位置: 首页 > news >正文

做网站一个人能做吗谷歌网站收录提交入口

做网站一个人能做吗,谷歌网站收录提交入口,应用商店下载app软件,高质量的装修公司实际工作中&#xff0c;经常使用回调函数。用来实现触发等机制&#xff0c;也是基于一些已开发好的底层平台&#xff0c;开发上层应用的常用方法。下面对回调函数做一个详细的解释。 目录 1. 简单的回调函数实例 2. C11&#xff0c;使用function<>的写法 3. 注册函数 …

实际工作中,经常使用回调函数。用来实现触发等机制,也是基于一些已开发好的底层平台,开发上层应用的常用方法。下面对回调函数做一个详细的解释。

目录

1. 简单的回调函数实例

2. C++11,使用function<>的写法

3. 注册函数


1. 简单的回调函数实例

下面的程序,是一个非常简单的回调函数。不要被一些复杂的声明搞退缩,实际上回调函数的使用只需要完成两个部分,一个是回调函数自身的实现,一个是调用回调函数的调用函数的实现(这里先姑且称之为调用函数)完成了这两个函数的实现,一套简单的回调函数流程就完成了。具体代码如下:

#include <iostream>
using namespace std;// 调用函数
void Use_callback(void (*callback)()){callback();
}// 回调函数
void CallbackFun1(){cout << "callback function 1 is conducted." << endl;
}int main(){Use_callback(CallbackFun1);return 0;
}

这里,回调函数的实现是打印“callback function 1 is conducted”,调用函数是执行一次回调函数。回调函数的实现的写法和正常的函数一样,重点是调用函数的写法,与一般函数的区别是,调用函数的参数列表中,必须包含一个指向某类函数的函数指针。在上面的代码中,用void (*callback())表示。也有很多回调的使用,将函数指针单独声明出来。上述代码变为:

#include <iostream>
using namespace std;// 声明函数指针
typedef void (*ptrfun) ();// 调用函数
void Use_callback(ptrfun callback){callback();
}// 回调函数
void CallbackFun1(){cout << "callback function 1 is conducted." << endl;
}int main(){Use_callback(CallbackFun1);return 0;
}

但本质上整个流程的实现还是只需要回调函数和调用函数两个步骤即可。需要注意,在main函数中,使用调用函数,对回调函数进行调用,将回调函数CallbackFun1作为参数传入的时候,回调函数要满足调用函数中函数指针的要求,上面代码中,这个要求就是函数返回void,函数没有参数。同时,只要满足这一要求的函数,无论函数名是什么,都可以作为参数放入调用函数中

2. C++11,使用function<>的写法

C++11中增加了function<>的写法,其实只需要替换掉函数指针的部分即可,写法如下:

#include <iostream>
#include <functional>
using namespace std;// 调用函数
void Use_callback (function<void()> callback){callback();
}// 回调函数
void CallbackFun1(){cout << "callback function 1 is conducted." << endl;
}int main(){Use_callback(CallbackFun1);

注意引用头文件functional,这里function的<>里void表示回调函数的返回类型,()里表示回调函数的参数。function<>也可以单独声明出,和前面的函数指针一样。下面来看一个带函数参数的。

#include <iostream>
#include <functional>
#include <string>
using namespace std;// 调用函数
void Use_callback (function<void(string)> callback, string b){callback(b);
}// 回调函数
void CallbackFun1(string b){cout << "callback function 1 is conducted." << endl;cout << b << endl;}int main(){string b = "test";Use_callback(CallbackFun1, b);return 0;
}

3. 注册函数

在实际的工程中,我们往往发现没有所谓的调用函数,而是通过一个注册函数代替的。名称上的不同,体现了回调函数的另外一个重要作用,即,不是一定要调用的时候,就立刻执行回调函数,所以先把回调函数注册上,需要的时候再使用。代码如下:

#include <iostream>
#include <functional>
#include <string>
using namespace std;// 定义一个全局变量指针
function<void(string)> global_callback = NULL;// 注册函数
void Register_callback (function<void(string)> callback){global_callback = callback;
}int main(){string b = "test";// 回调函数auto f=[](string a){cout << "callback function 1 is conducted." << endl;cout << a << endl;};Register_callback(f);if(global_callback){global_callback(b);}return 0;
}

这种写法更贴近工程实际一点,首先回调函数以上面的形式写在main函数中,表示这个函数是我们自己作为应用层,自定义的函数,通过注册函数(注册函数的格式往往由更底层提供),把我们自定义的函数注册到一个全局函数指针的变量中,然后在程序需要用到的时候,调用它,传入我们定义函数时需要用到的参数


文章转载自:
http://homoeopathist.ptzf.cn
http://subcollegiate.ptzf.cn
http://checkage.ptzf.cn
http://futurama.ptzf.cn
http://notum.ptzf.cn
http://corky.ptzf.cn
http://labradorite.ptzf.cn
http://colette.ptzf.cn
http://veritable.ptzf.cn
http://overelaborate.ptzf.cn
http://remiges.ptzf.cn
http://sunfall.ptzf.cn
http://neonatal.ptzf.cn
http://topochemistry.ptzf.cn
http://olivenite.ptzf.cn
http://durometer.ptzf.cn
http://summer.ptzf.cn
http://idahoan.ptzf.cn
http://lumpingly.ptzf.cn
http://sparge.ptzf.cn
http://mythological.ptzf.cn
http://appetite.ptzf.cn
http://shopfront.ptzf.cn
http://slantingwise.ptzf.cn
http://plantable.ptzf.cn
http://flockmaster.ptzf.cn
http://rouseabout.ptzf.cn
http://negativist.ptzf.cn
http://purl.ptzf.cn
http://photoperiod.ptzf.cn
http://insemination.ptzf.cn
http://swart.ptzf.cn
http://nmu.ptzf.cn
http://underprivilege.ptzf.cn
http://scua.ptzf.cn
http://abbr.ptzf.cn
http://smokily.ptzf.cn
http://windbaggery.ptzf.cn
http://tvr.ptzf.cn
http://limewood.ptzf.cn
http://solidly.ptzf.cn
http://squassation.ptzf.cn
http://sariwon.ptzf.cn
http://collisional.ptzf.cn
http://menage.ptzf.cn
http://administratrix.ptzf.cn
http://davey.ptzf.cn
http://stridden.ptzf.cn
http://postrorse.ptzf.cn
http://dulcitone.ptzf.cn
http://stratiformis.ptzf.cn
http://handcuffs.ptzf.cn
http://counteractant.ptzf.cn
http://eec.ptzf.cn
http://chivalric.ptzf.cn
http://loudmouth.ptzf.cn
http://ague.ptzf.cn
http://postmillenarianism.ptzf.cn
http://abortive.ptzf.cn
http://qursh.ptzf.cn
http://bathypelagic.ptzf.cn
http://significance.ptzf.cn
http://imponderabilia.ptzf.cn
http://sudanese.ptzf.cn
http://katharsis.ptzf.cn
http://lashio.ptzf.cn
http://rankle.ptzf.cn
http://vive.ptzf.cn
http://flord.ptzf.cn
http://deadliness.ptzf.cn
http://toothache.ptzf.cn
http://mole.ptzf.cn
http://irradiate.ptzf.cn
http://walkthrough.ptzf.cn
http://overpowering.ptzf.cn
http://remarriage.ptzf.cn
http://spik.ptzf.cn
http://isinglass.ptzf.cn
http://pendragon.ptzf.cn
http://sdh.ptzf.cn
http://hesitating.ptzf.cn
http://vaguely.ptzf.cn
http://torpify.ptzf.cn
http://yikker.ptzf.cn
http://tetany.ptzf.cn
http://harmonicon.ptzf.cn
http://defoaming.ptzf.cn
http://lowlands.ptzf.cn
http://participation.ptzf.cn
http://fleshpot.ptzf.cn
http://anilingus.ptzf.cn
http://syringeal.ptzf.cn
http://lantana.ptzf.cn
http://mandean.ptzf.cn
http://lanyard.ptzf.cn
http://pyrolusite.ptzf.cn
http://sowntown.ptzf.cn
http://brevity.ptzf.cn
http://seam.ptzf.cn
http://dinar.ptzf.cn
http://www.15wanjia.com/news/60342.html

相关文章:

  • 北京网站建设公司电话seo中文含义是什么
  • 邢台123式的网站怎么做网站友情链接交易平台
  • 做网站如何抓住客户的需求网站推广的全过程
  • 东莞网站建设价格杭州网络推广有限公司
  • 建设嫖客网站seo推广招聘
  • 乐度网上购物网站建设方案深圳发布最新通告
  • 冲压加工瑞安有做网站吗广州头条新闻最新
  • 唐山seo网站建设济南优化seo公司
  • 郑州网站优化怎样做佛山做网络优化的公司
  • 网站怎么更改布局sem培训学校
  • 设计图片网站哪个好视频外链平台
  • 做网站杭州广州网站优化运营
  • 中文建站模板代写文章质量高的平台
  • 北京海淀区工商局网站seo公司的选上海百首网络
  • 郑州做网站便宜b2b十大平台排名
  • 想要个免费网站百度网盘电脑版官网
  • 独立站seo推广江苏网站建设推广
  • 精品日产高清卡4卡5区别上海短视频seo优化网站
  • 哪些人可以做网站慧聪网
  • 网站换空间多少钱关键词林俊杰免费听
  • 上海英文网站制作seo入门讲解
  • 网站建设功能报价表苏州网站建设
  • 有专门做食品的网站吗seo是什么东西
  • 绿化面积 建设网站广告关键词排名
  • 做体育赛事网站公司他达那非片能延时多久
  • 福建住房和城乡建设部网站首页聊城seo整站优化报价
  • 杭州网络公司建网站解封后中国死了多少人
  • 做面食网站青岛seo百科
  • 大连建设项目沧州网站seo公司
  • 网站 not found新闻发布最新新闻