可调用对象
函数、函数指针、lambda表达式、bind创建的对象、重载了函数调用运算符的类这五种都叫做可调用对象。
特点:任何一个可调用对象有自己唯一的类类型,因此不可能将几个可调用对象放到同一个vector或者array中。但是不同类型的可调用对象可以有相同的参数类型和返回类型,可以利用function类将它们包装成同一种类型,放到容器里,这个容器就叫做函数表。
使用:
#include <functional>
function<double (double, double)> f1 = add;
function<double (double, double)> f2 = divide;
function<double (double, double)> f3 = [](double x, double y){return x * y;}
map<string, function<double (double, double)>> binops = {
{"+", add},
{"-", std::minus<double>()},
{"/", divide()},
{"*", [](double x, double y){return x*y;}},
{"%", mod}
};
binops["+"](10, 5);
网友评论