👀樊梓慕:个人主页
🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》《算法》
🌝每一个不曾起舞的日子,都是对生命的辜负
前言
function包装器
function包装器概述
function包装器使用
function包装器的实际应用
bind包装器
bind包装器概述
bind包装器使用
前言
我们目前学习过的可调用对象有三种:函数指针、仿函数以及lambda表达式(实际上也是仿函数),但是这三种可调用对象却又有各自的缺点,比如函数指针类型写起来比较复杂,仿函数的类型不统一,而lambda表达式语法层上就没有类型,所以C++11引入了包装器,主要就是为了封装他们,统一类型。
欢迎大家📂收藏📂以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。
=========================================================================
GITEE相关代码:🌟樊飞 (fanfei_c) - Gitee.com🌟
=========================================================================
function包装器
function包装器概述
包装器就是对可调用对象的再封装,C++中的function本质上就是一个 『 类模板』。
function类模板的原型如下:
template function; template class function;
其中Ret是被包装的可调用对象的返回类型,而Args则是被包装的可调用对象的形参类型。
function引入的目的就是为了统一三种可调用对象的类型。
那么我们如何进行包装呢?
function包装器使用
//普通函数 int f(int a, int b) { return a + b; } //仿函数对象 struct Functor { public: //仿函数 int operator()(int a, int b) { return a + b; } }; class Plus { public: //类的静态成员函数 static int plusi(int a, int b) { return a + b; } //类的非静态成员函数 double plusd(double a, double b) { return a + b; } }; int main() { //1、包装函数指针(函数名) function func1 = f; cout