在自己实现function模板类之前,我们先来了解一下functiom的基本使用。
function模板类定义在<functional>头文件中,可以用来存储、复制、调用任意可调用对象,如函数、函数指针、函数对象、lambda表达示。
#include<iostream>
#include<functional>
using namespace std;
int add(int a, int b) { // 定义一个加法函数
return a + b;
}
class ADD_MULT { // 定义一个重载了()运算符的类,效果是先对传进来的两个参数求和,再乘以该对象的成员x,最后返回计算得到的结果
public:
ADD_MULT (int x) : x(x) {}
int operator()(int a, int b) {
return (a + b) * x;
}
private:
int x;
};
int main() {
ADD_MULT add_mult(3);
cout << "add_mult(2, 4) = " << add_mult(2, 4) << endl;
cout << "add(2, 4) = " << add(2, 4) << endl;
function<int (int, int)> q = add;
cout << "q = add" << endl;
cout << "q(2, 4) = " << q(2, 4) << endl;
q = add_mult;
cout << "q =