Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300003
  • 博文数量: 148
  • 博客积分: 4365
  • 博客等级: 上校
  • 技术积分: 1566
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-05 21:38
文章分类
文章存档

2014年(2)

2013年(45)

2012年(18)

2011年(1)

2009年(54)

2008年(28)

我的朋友

分类: 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对象来“存储”。这东西虽然很方便,但总感觉平时不会用到太多。

阅读(1375) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~