分类: C/C++
2013-02-06 17:16:09
在c++11中,一个callable object可以是函数指针、lambda表达式、重载()的某类对象、bind包裹的某对象等等,有时需要统一管理一些这几类对象,新增的function就是为此而生。
function位于functional头文件,可以看做是那几类callable object的抽象表示。
#include#include using namespace std; int f_add(int i,int j){return i+j;} auto l_add = [](int i,int j){return i+j;}; class c_add{ public: c_add()=default; int operator()(int i,int j){return i+j;} }; int main() { function f1 = f_add; function f2 = l_add; function f3 = c_add(); cout<<"f1 add: "< f_add是普通的函数,l_add是lambda表达式,c_add重载了()操作符,都能起到计算两个int和的效果,他们都可以用function对象来“存储”。这东西虽然很方便,但总感觉平时不会用到太多。