C++11 bind和std::function

C++ bind函数

可调用对象:

  1. 是函数指针
  2. 是一个具有operator()成员函数的类对象
  3. 是一个可被转换为函数指针的类对象
  4. 是一个类成员函数指针

可调用对象包装器:std::function:
可以保存函数延迟执行,比较适合作为回调函数。

bind函数: 
bind函数看做一个通用的函数适配器,它接受一个可调用对象callable,生成一个新的可调用对象newCallable。
它可以把原可调用对象callable的某些参数预先绑定到给定的变量中(也叫参数绑定),然后产生一个新的可调用对象newCallable。
可以绑定类和成员函数,调用指定类的成员函数,或者传入的某个类,利用std::placeholders::_1

网络编程中, 经常要使用到回调函数。 当底层的网络框架有数据过来时,往往通过回调函数来通知业务层。 这样可以使网络层只专注于数据的收发, 而不必关心业务。

bind 用来将可调用对象和参数一起进行绑定,绑定后结果可以使用std::function进行保存,并延迟调用到任何我们需要的时候。
作用:

  1. 将可调用对象和其参数绑定成一个仿函数。
  2. 将多元可调用对象转化为(n-1)元可调用对象
  3. 将函数和功能解耦,得到足够具体的功能闭包。
    std::placeholders::_1是一个占位符,代表这个位置将在函数调用时,被传入的第一个参数所替代。
    参考:《深入应用C++ 11》
posted @   227569hy  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示