转自: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. 电池管理系统(BMS)

    概述 电池管理系统(BMS)为一套保护动力电池使用安全的控制系统,时刻监控电池的使用状态,通过必要措施缓解电池组的不一致性,为新能源车辆的使用安全提供保障. 经纬恒润在控制系统开发方面拥有雄厚的实力和 ...

  2. JDBC课程2--实现Statement(用于执行SQL语句)--使用自定义的JDBCTools的工具类静态方法,包括insert/update/delete三合一

    /**JDBC课程2--实现Statement(用于执行SQL语句) * 1.Statement :用于执行SQL语句的对象: * 1): 通过Connection 的createStatement( ...

  3. jQuery实现点击复制效果

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  4. mnist数据的预测结果以及批量处理

    import sys, os sys.path.append('F:\ml\DL\source-code') from dataset.mnist import load_mnist from PIL ...

  5. Python基本的语法知识

    1. 编程语言的介绍 低级语言:机器语言--------计算机内部只能接受二进制代码,故用0或者1表示的指令称为机器指令,全部的机器指令构成了计算机的机器语言. 汇编语言--------实质上跟机器语 ...

  6. Linux中drwxr-xr-x.的意思和权限

    转载:https://blog.csdn.net/weixin_39209728/article/details/79729885 读(read),写(write),执行r(recute)简写即为(r ...

  7. 有关Django的smallDemo

    注: 电脑为Mac,Python解释器为3.5.4 数据库使用的是pymysql模块代替mysqldb 功能: 运行服务器,在login登录界面输入用户名和密码,post到服务器, 通过数据库判断用户 ...

  8. Postgresql pg_dump

    pg_dump 命令详解 参数 描述 -h 指定服务器名称 -p 指定端口 -U 指定要连接的用户名 -w/--no-password 从不提示密码 -W/--password 强制pg_dump在连 ...

  9. Postgresql 日志相关

    目录日志种类作用总结配置文件中与日志相关的配置日志种类 PostgreSQL有3种日志 pg_log(数据库运行日志)   内容可读    默认关闭的,需要设置参数启动pg_xlog(WAL 日志,即 ...

  10. 爬虫(四):BeautifulSoup库的使用

    一:beautifulsoup简介 beautifulsoup是一个非常强大的工具,爬虫利器. beautifulSoup “美味的汤,绿色的浓汤” 一个灵活又方便的网页解析库,处理高效,支持多种解析 ...