转自:https://blog.csdn.net/shuilan0066/article/details/82788954

示例1 : 普通函数
void gFunc()
{
    cout << "gFunc" << endl;
}
int main()
{
    std::function<void()> f = gFunc;
    f();
    getchar();
    return 0;
}

示例2 模板函数

template <class T>
T g_Add(T i, T j)
{
  cout << i + j;
  return i + j;
} int main()
{
  std::function<int(int,int)> f = g_Add<int>;
  f(,);   getchar();
  return ;
}
示例三: 匿名函数

auto g_Lambda = [](int i, int j)
{
  return i + j;
}; //匿名函数 此处有分号 int main()
{
  std::function<int(int, int)> f = g_Lambda;
  cout<<f(,);   getchar();
  return ;
}
示例四:函数对象

/函数对象
struct Add
{
  int operator()(int i, int j)
  {
    return i + j;
  }
}; //模板函数对象
template <class T>
struct AddT
{
  T operator()(T i, T j)
  {
    return i + j;
  }
}; int main()
{
  std::function<int(int, int)> f = Add();
  cout<<f(,)<<endl;   std::function<int(int, int)> ft = AddT<int>();
  cout << ft(, )<<endl;   getchar();
  return ;
}
示例5:类成员函数

class Computer
{
  public:
  static int Add(int i, int j)
  {
    return i + j;
  }   template<class T>
  static T AddT(T i, T j)
  {
    return i + j;
  }   int AddN(int i, int j)
  {
    return i + j;
  }
}; //存储对成员函数的调用 int main()
{
  //1、 类静态函数
  std::function<int(int, int)> f = &Computer::Add;
  cout << f(, ) << endl;   //2、 类静态模板函数
  std::function<int(int, int)> ft = &Computer::AddT<int>;
  cout << ft(, ) << endl;   //普通函数绑定 需要构造类对象
  Computer c;   //3、 普通函数 需使用bind,将类对象地址 &c 绑定上
  std::function<int(int, int)> fN = std::bind(&Computer::AddN, &c, placeholders::_1, placeholders::_2);
  cout << fN(, ) << endl;   //4、普通函数, 也可以这样调用 个人觉得这个比 bind 麻烦,不建议
  std::function <int(const Computer &, int, int)> fN2 = &Computer::AddN;
  cout << fN2(c,, ) << endl;   getchar();
  return ;
}

std::function以及std::bind的更多相关文章

  1. std::function,std::bind

    std::function 和 std::bind 标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数.bind()接受一个函数(或者 ...

  2. C++ 中std::function 、std::bind的使用和lambda的使用

    std::function是可调用对象的包装器:std::bind是将可点用对象和其参数一起进行绑定,且绑定后的结果可以使用std::function对象进行保存,并延迟调用到需要调用的时候: 在C+ ...

  3. C++11 std::function、std::bind和lambda表达式

    参考博客: C++可调用对象详解-https://www.cnblogs.com/Philip-Tell-Truth/p/5814213.html 一.关于std::function与std::bin ...

  4. C++11新特性应用--实现延时求值(std::function和std::bind)

    说是延时求值,注意还是想搞一搞std::function和std::bind. 之前博客<C++11新特性之std::function>注意是std::function怎样实现回调函数. ...

  5. c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind

    一.符号修饰与函数签名 1.符号修饰 编译器将c++源代码编译成目标文件时,用函数签名的信息对函数名进行改编,形成修饰名.GCC的C++符号修饰方法如下: 1)所有符号都以_z开头 2)名字空间的名字 ...

  6. C++11之std::function和std::bind

    std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...

  7. std::function与std::bind 函数指针

    function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时. std::function可以绑定到全局函数/类静态成员 ...

  8. 转 C++11之std::function和std::bind

    std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...

  9. 【浅析C++11】std::function和std::bind

    目录 std::function可调用对象包装器 std::function基本用法 std::function/std::bind与抽象工厂.工厂方法的一点思考 std::function可调用对象 ...

随机推荐

  1. 小程序数据绑定和setData

    我们wxml没有直接调用数据的能力,我们的逻辑是通过js调用数据,再由js传递给wxml才能够显示出来.那么怎么由js传递给wxml?   首先我的js里面有这样一段代码 process: funct ...

  2. php多版本配置

    需求分析: 需要在一台装有php5.4的测试服务器跑的上php7.2.x的项目 安装phpenv(php版本控制) $ sudo yum install git $ mkdir -p repos/gi ...

  3. 我花了2个月时间,整理了100篇Linux技术精华,技术人必看

    一个以技术为立身根基的教育机构做出来的微信号,干货程度会有多高? 马哥Linux运维公众号运营五年,从一开始的定位就是给技术人分享加薪干货的地方.这五年里,公众号运营最重的任务就是做内容.内容并不好做 ...

  4. 命令检测站点是否使用CDN加速

    在CMD   输入   nslookup    域名 例如:nslookup www.baidu.com有CDN的示例Server:  cache3-gzAddress:  211.98.4.1Non ...

  5. 备份MySQL数据库并上传到阿里云OSS存储

    1. 环境配置 要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载 官网及文档: htt ...

  6. vue 监听子组件事件及组件上使用v-model

  7. 带有EXE参数的启动

    (一).先制作一个带启动参数的EXE文件. 步骤:            1.定义全局私有变量:private string[] s = new string[1];  //这里为了简单起见,只做一个 ...

  8. C#当前运行所在目录集合

    //获取当前进程的完整路径,包含文件名(进程名).string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (. ...

  9. Linux 介绍与安装

  10. CSP2019 D1T3 树上的数 (贪心+并查集)

    题解 因为博主退役了,所以题解咕掉了.先放个代码 CODE #include<bits/stdc++.h> using namespace std; const int MAXN = 20 ...