C++11 中的std::function和std::bind
2021-03-19 09:25
标签:可调用对象 保存 ref 参数 col mina 适配 cti code 1. 背景: C++有不同的调用形式:函数指针、lambda表达式、有operator()的类对象等。 形式不同但调用方式却相同。为了能够统一,引入std::function和std::bind,来实现。 例子: 使用std::function后,可将其都保存下来 2. std::function std::function是一个可调用对象包装器,可以保存以上所有形式的可调用对象,并且允许延迟执行等操作。比普通函数指针更加灵活和遍历。 3. std::bind 作为一个通用的函数适配器,接受一个可调用对象,生成另一个可调用对象。如std::function, 类成员函数 可以讲可调用对象和参数绑定在一起并且保存。减少调用参数。 a. 绑定一个引用参数: 使用关键字ref() C++11 中的std::function和std::bind 标签:可调用对象 保存 ref 参数 col mina 适配 cti code 原文地址:https://www.cnblogs.com/dylan-liang/p/13943972.html// 普通函数
int add(int a, int b){return a+b;}
// lambda表达式
auto mod = [](int a, int b){ return a % b;}
// 函数对象类
struct divide{
int operator()(int denominator, int divisor){
return denominator/divisor;
}
};
std::functionint(int ,int)> a = add;
std::functionint(int ,int)> b = mod ;
std::functionint(int ,int)> c = divide();
文章标题:C++11 中的std::function和std::bind
文章链接:http://soscw.com/index.php/essay/66179.html