未分类
一、可调用对象概念
C++中有如下几种可调用对象:函数、函数指针、lambda表达式、bind对象、函数对象。
可调用对象可以理解成具有函数特性的类型,区别于普通的变量类型
二、function 类模板
function<int(int)> // 声明一种function()类型来表示一种可调用对象 // 此处表示的可调用对象是:参数为int类型,返回值为int类型 int fun(int i); void fun(); function<int(int)> f1 = fun; // 如果fun() 函数有其他的重载函数,例如还有void fun();函数,该处会编译报错
上面的情况会出现二义性问题,编译报错,可以用函数指针的方法来解决
int(*fp1)(int) = fun; void(*fp2)() = fun; int(*fp3)(int) = fun; function<int(int)> f1 = fp1; // 用函数指针的方法可以避免上面的二义性情况