1、C++98 的函数对象
从概念上来说,函数对象是一个可以被当作函数来用的对象。它有时也会被叫做 functor,代码看一个函数对象:
struct CAverage
{
public:
double operator()(int a1, int a2)
{ //重载()运算符
return (double)(a1 + a2) / 2;
}
};
int main()
{
CAverage average;
std::cout << average(3, 2); //等价于 cout << average.operator(3, 2, 3);
return 0;
}
它看起来相当普通,唯一有点特别的地方就是定义了一个 operator(),这个运算符允许我们像调用函数一样使用小括号的语法。
2、Lambda 表达式
先看一个例子:
int main()
{
int a = 10;
std::cout << [a](int x,int y) { return (double)(x + y + a) / 2; }(1,2); //输出 6.5
getchar();
return 0;
}
理解它只需要注意下面几点:
&#