背景
①.可调用对象
对于一个对象或者一个表达式,如果可以对其使用调用运算符,则称为可调用对象。
②.调用形式
一种调用形式对应了一个函数类型,指明了调用返回类型以及传递的参数类型,比如:int (int,int)
function
function 定义在头文件 functional 中,是一个模板类型,可以用来存储可调用对象。
//普通函数
int add(int i,int j) { return i+ j }
//函数指针
int (*addptr)(int i,int j) = add;
//lanbda 表达式
auto mod = [](int i,int j) {return i%j }
//函数对象类
class divide
{
int operator()(int i,int j)
{
return i/j;
}
}
function<int(int,int)> f1 = add;
function<int(int,int)> f2 = divide();//函数对象类
function<int(int,int)> f3 = [](int i,int j) {return i%j };
function<int(int,int)> f4 = addptr;//函数指针
通常可以使用 map 保存一系列 function 对象,便可以根据条件直接调用对应函数,从而避免了大量的 if 判断代码。