std::function以及std::bind
转自: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的更多相关文章
- std::function,std::bind
std::function 和 std::bind 标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数.bind()接受一个函数(或者 ...
- C++ 中std::function 、std::bind的使用和lambda的使用
std::function是可调用对象的包装器:std::bind是将可点用对象和其参数一起进行绑定,且绑定后的结果可以使用std::function对象进行保存,并延迟调用到需要调用的时候: 在C+ ...
- C++11 std::function、std::bind和lambda表达式
参考博客: C++可调用对象详解-https://www.cnblogs.com/Philip-Tell-Truth/p/5814213.html 一.关于std::function与std::bin ...
- C++11新特性应用--实现延时求值(std::function和std::bind)
说是延时求值,注意还是想搞一搞std::function和std::bind. 之前博客<C++11新特性之std::function>注意是std::function怎样实现回调函数. ...
- c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind
一.符号修饰与函数签名 1.符号修饰 编译器将c++源代码编译成目标文件时,用函数签名的信息对函数名进行改编,形成修饰名.GCC的C++符号修饰方法如下: 1)所有符号都以_z开头 2)名字空间的名字 ...
- C++11之std::function和std::bind
std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...
- std::function与std::bind 函数指针
function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时. std::function可以绑定到全局函数/类静态成员 ...
- 转 C++11之std::function和std::bind
std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...
- 【浅析C++11】std::function和std::bind
目录 std::function可调用对象包装器 std::function基本用法 std::function/std::bind与抽象工厂.工厂方法的一点思考 std::function可调用对象 ...
随机推荐
- 前端笔记-bom
BOM对象 BOM即浏览器对象模型,它与dom不同的是可以操作浏览器窗口,使用它的接口我们可以改变窗口,状态栏,文本,及其他与除页面以外其他动作,使得js可以和我们浏览器进行沟通 窗口 即window ...
- EntityFramework 事物引发的问题
前记 还是最近做的日志模块,今天做最后的入库工作.在测试入库日志记录时,总是出现怪异的问题. 开启服务开始接收 Kafka 的消息,第一条数据没有问题,后面的都如不了库.很是懵~~~ 调试了很久定位在 ...
- matlab(5) : 求得θ值后用模型来预测 / 计算模型的精度
求得θ值后用模型来预测 / 计算模型的精度 ex2.m部分程序 %% ============== Part 4: Predict and Accuracies ==============% Af ...
- Jenkins+jmeter+ant+Git 持续集成(六、代码提交到Gitlab即自动构建)
实现原理: 利用jenkins和gitlab的webhook结合,实现提交代码之后,自动触发jenkins的构建. 1.Jenkins的插件安装: 需要安装两个gitlab的插件:Gitlab Hoo ...
- kombu在redis中的键值名
参考flower源码 取队列名,发送到求数量的函数中 queue_names = ControlHandler.get_active_queue_names() queues = yield brok ...
- c++ 智能指针的使用
https://www.cnblogs.com/TenosDoIt/p/3456704.html #include <QCoreApplication> #include <stri ...
- [Dart] splitMapJoin
var str3 = '''Multi Line String'''; print( str3.splitMapJoin( RegExp(r'^', multiLine: true), // Matc ...
- Mybatis延迟加载, 一级缓存、二级缓存
延迟加载 概念:MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时,按照设置延迟规则推迟对关联对象的select查询.延迟加载可以有效的减少数据库压力. (注意:MyBatis的延迟加载只 ...
- hive优化,控制map、reduce数量
一.调整hive作业中的map数 1.通常情况下,作业会通过input的目录产生一个或者多个map任务.主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为1 ...
- ES 的基本用法
ES的基本用法 ES的基本概念 1> 集群和节点 一个es集群是由一个或多和es节点组成的集合 每一个集群都有一个名字, 如之前的wali 每个节点都有自己的名字, 如之前的master, sl ...