C++基础知识7:bind函数

本文目的

简单的介绍一下bind函数是做什么的,会在哪些常见使用,这里讲的是functional库的bind函数而不是其他的

前置与关联知识点

bind函数简介

参考《Primer C++》10.3.4参数绑定p354

可以将bind函数看作一个通用的函数配接器,接受一个可调用对象,生成一个新的可调用对象。

bind函数的使用

1. bind函数的一般形式

auto newCallable = bind(callable, arg_list);
//callable是可调用对象(函数体,仿函数等)
//arg_list是一个逗号分隔的参数列表,依次代表需要填入callable的参数
//arg_list可以是占位符_1,_2,...,_n,或者实际参数。
//占位符表示新生成的可调用对象newCallable的形参。

假如有如下函数

void func1(int a, int b, char c){int d = a + b + c};//原来的函数
auto func2 = bind(callable, _2, _1, '6');//使用的bind函数进行新的函数生成
//调用func2(x,y);
func2(2,3);//等价于调用了func1(y,x,'6');
//等价于func2的函数是
//void func2(int b, int a){int d = a + b +'6'};

可以看出来其实占位符是为了表征新的可调用对象的哪个参数对应原来可调用对象的哪个参数,这样可以在不需要重新编写的情况下获得新的可调用对象,提高复用性。

2. 在哪些场景使用

函数指针是可以作为形参的,但是函数指针的指针类型必须对的上,bind函数可以很好的把原有的可调用对象,修改成适合的函数指针类型(仅仅是形参,返回值好像无法修改)。

3. 例子

直接看《Primer C++》10.3.4参数绑定p354这里就不写了。

参考文献

《Primer C++》10.3.4参数绑定p354

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值