定义一个std::function<int(int)>对象实例
std::function<int(int)> callback;
std::function对象实例包装函数指针
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;
}
std::function包装函数
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;
}
std::function包装模板函数
template<typename T>
T fun2(T a){
return a + 2;
}
int main(int argc, char *argv[]){
std::cout << "Hello world" << std::endl;
callback = fun2<int>; //std::function包装模板函数
std::cout << callback(10) << std::endl; //std::function对象实例调用包装的调用实体
return 0;
}
std::function包装函数对象
struct add{
int operator()(int x){
return x + 9;
}
};
int main(int argc, char *argv[]){
std::cout << "Hello world" << std::endl;
callback = add(); //std::function包装对象函数
std::cout << callback(2) << std::endl; //std::function对象实例调用包装的调用实体
return 0;
}