未分类

一、可调用对象概念

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;  // 用函数指针的方法可以避免上面的二义性情况

 

posted @ 2020-06-18 17:32  min_zhi  阅读(298)  评论(0编辑  收藏  举报