包含头文件 #include <functional>
//普通函数
int add(int i, int j) {
return i+j;
}
//lambda表达式
auto add = [](int i, int j){
return i+j;
}
//函数对象类
class add{ //仿函数
int operator() (int i, int j){
return i+j;
}
}
struct add{
int operator() (int i, int j){
return i+j;
}
}
std::function<int(int, int)> add = [](int i, int j){
return i+j;
}
typedef std::function<int(int, int)> AddCallback;
类模板std::function是通用、多态的函数封装。可以封装任意的函数对象。
1. function对象最大的用处是实现函数回调,统一处理不同的函数对象类型。函数指针也可以完成同样功能,但是用std::functional实现更加安全。
2. 该对象能与NULL或者nullptr进行比较,但不能检查是否相等