C++拾遗--lambda表达式原理
前言
lambda表达式是在C++11新标准中提出的。在lambda表达式中,我们集中梳理了一下它的使用。现在来讨论下它的实现原理。
正文
1.函数对象
类的对象跟括号结合,表现出函数一般的行为,这个对象可以称作是函数对象。
#include <iostream>
using namespace std;
class MyClass
{
public:
//重载函数调用运算符()
int operator()(int i)
{
return i;
}
};
int main()
{
MyClass my;
//my()的调用行为似同函数
int i = my(1); //本质是调用 my.operator()(1)
cout << "i = " << i << endl;
cin.get();
return 0;
}
运行
这个示例说明函数对象的本质是重载了函数调用运算符。当一个类重载了函数调用运算符()后,它的对象就成了函数对象。这是理解lambda表达式内部实现的基础。