C++11学习笔记6---std::function
2015-10-29 11:11
218 查看
1.C++有哪些可调用对象
①函数
②函数指针
③lamdba表达式(CP5 P346)
④bind创建的对象(CP5 P354)
⑤重载了函数调用运算符的类(CP5 P506)
2.为什么要使用std::function
过程是一系列操作的抽象,有时我们需要对过程进一步抽象。
当5种对象具有相同的调用形式与返回类型时,我们希望对于C++的5种可调用对象不加区别地使用。
但是这5种可调用并不具有一致的类型(比如每一个个lambda表达式都有自己的类型),无法放入统一的容器中。
这个时候我们就可以使用std::function<T> f; 对这些可调用对象进行封装。
注:function<T>中的T不是一个具体的类,而是函数签名(包括函数的返回类型,参数列表)
比如T可以是int(int, int)或者是最简单的void()
2015/12/4补充
3.std::bind的作用
这个的作用就是将原本的一个可调用对象的一些参数绑定,生成另外一个可调用对象。
①函数
②函数指针
③lamdba表达式(CP5 P346)
④bind创建的对象(CP5 P354)
⑤重载了函数调用运算符的类(CP5 P506)
2.为什么要使用std::function
过程是一系列操作的抽象,有时我们需要对过程进一步抽象。
当5种对象具有相同的调用形式与返回类型时,我们希望对于C++的5种可调用对象不加区别地使用。
但是这5种可调用并不具有一致的类型(比如每一个个lambda表达式都有自己的类型),无法放入统一的容器中。
这个时候我们就可以使用std::function<T> f; 对这些可调用对象进行封装。
注:function<T>中的T不是一个具体的类,而是函数签名(包括函数的返回类型,参数列表)
比如T可以是int(int, int)或者是最简单的void()
2015/12/4补充
3.std::bind的作用
这个的作用就是将原本的一个可调用对象的一些参数绑定,生成另外一个可调用对象。
相关文章推荐
- LCS 解决最长子串(c++代码)
- 1014_C语言的文法
- C++文件读写
- 个比较实用的VS C++版本号自增的实现方式
- 查找和排序方法归类----C和C++
- 【转】一个比较实用的VS C++版本号自增的实现方式
- activemq-cpp 例子编译
- [转]一个比较实用的VS C++版本号自增的实现方式
- C++常见几种输出方法评测(int && long long)
- C++11:lambda表达式
- 1032. 挖掘机技术哪家强(20)
- 首个 C++ 编译器诞生 30 周年了,来听听 C++ 之父畅谈 C++
- VSC++代码智能提示——Visual Assist X
- C++中运算符的优先级(供查阅)
- MPLAB X IDE使用心得
- Effective C++ 总结
- C++11学习笔记5---智能指针
- C语言学习笔记一
- C++、C#、java算法学习日记01---冒泡排序(BubbleSort)
- C++中的volatile修饰符的作用