std::function

一个可调用对象的包装器,其对象实例可用来包装函数,函数指针,成员函数,静态成员函数,lambda表达式,静态函数,函数对象等,该实例可以被拷贝和移动

实例

对象创建

std::function<int(int)> callback();

//1.对象实例包装一个函数指针
int (*fun_ptr)(int);

int fun1(int a){
    return a;
}

int main(int argc, char *argv[]){
    std::cout << "Hello world" << std::endl;

    fun_ptr = fun1; //函数指针fun_ptr指向fun1函数
    callback = fun_ptr; //std::function对象包装函数指针
    std::cout << callback(10) << std::endl; //std::function对象实例调用包装的实体

    return 0;
}

//2.对象实例包含一个函数
int fun1(int a){
    return a;
}

int main(int argc, char *argv[]){
    std::cout << "Hello world" << std::endl;

    callback = fun1; //std::function包装函数
    std::cout << callback(42) << std::endl; //std::function对象实例调用包装的调用实体

    return 0;
}

关于函数指针,可以看C语言中文网的函数指针介绍
std::function的存在,可以消除不同可调用对象之间调用的区别,从而使得调用过程变得简单粗暴,它实现了一套类型消除机制,可以统一处理不同的函数对象类型,这种工作在C++11以前是通过函数指针实现的

全部评论

相关推荐

专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务