C++11 bind和std::function
C++ bind函数
可调用对象:
- 是函数指针
- 是一个具有operator()成员函数的类对象
- 是一个可被转换为函数指针的类对象
- 是一个类成员函数指针
可调用对象包装器:std::function:
可以保存函数延迟执行,比较适合作为回调函数。
bind函数:
bind函数看做一个通用的函数适配器,它接受一个可调用对象callable,生成一个新的可调用对象newCallable。
它可以把原可调用对象callable的某些参数预先绑定到给定的变量中(也叫参数绑定),然后产生一个新的可调用对象newCallable。
可以绑定类和成员函数,调用指定类的成员函数,或者传入的某个类,利用std::placeholders::_1
网络编程中, 经常要使用到回调函数。 当底层的网络框架有数据过来时,往往通过回调函数来通知业务层。 这样可以使网络层只专注于数据的收发, 而不必关心业务。
bind 用来将可调用对象和参数一起进行绑定,绑定后结果可以使用std::function进行保存,并延迟调用到任何我们需要的时候。
作用:
- 将可调用对象和其参数绑定成一个仿函数。
- 将多元可调用对象转化为(n-1)元可调用对象
- 将函数和功能解耦,得到足够具体的功能闭包。
std::placeholders::_1是一个占位符,代表这个位置将在函数调用时,被传入的第一个参数所替代。
参考:《深入应用C++ 11》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!