在C++中可以对从在括号运算符。下面是一个重载括号运算符的类。
class Abs
{
public:
int operator()(int val) const
{
return val < 0 ? -val : val;
}
};
这是一个求绝对值的运算符重载。
int i = -1;
Abs obj;
int ui = obj(i);
std::cout << ui << std::endl;
这样就可以求绝对值了。
Abs是一个可用像函数一样调用的对象,函数对象
lambda也是放回一个可调用的对象。
int i = -1;
auto obj = [](int val)-> int {return val < 0 ? -val : val; };
int ui = obj(i);
其实这里的obj也是一个对象,那它的类型是什么呢。
obj的类型其实是 function<int(int)>
其实所有的lambda都放回一个function<T>的对象
.