描述:
std::function是一个通用的函数封装器,它可以包装任意可调用对象,包括普通函数、函数指针、成员函数、lambda表达式等。
包装普通函数:
#include <iostream>
#include <functional>
int Add(int a, int b)
{
return a + b;
}
int main()
{
//普通函数
std::function<int(int, int)> func1 = Add;
int s1 = func1(1,2);
std::cout << s1 << std::endl;
return 0;
}
包装函数指针:
#include <iostream>
#include <functional>
int Add(int a, int b)
{
return a + b;
}
int main()
{
//函数指针
int(*pFunc)(int, int) = &Add;
std::function<int(int, int)> func4 = pFunc;
int s4 = func4(4, 5);
std::cout << s4 << std::endl;
return 0;
}
包装lambda表达式:
#include <iostream>
#include <functional>
int main()
{
//lambda表达式
std::function<int(int, int)> func2 = [](int a, int b)->int {
return a + b;
};
int s2 = func2(2,3);
std::cout << s2 << std::endl;
return 0;
}
包装成员函数:
#include <iostream>
#include <functional>
class CTest
{
public:
int Add(int a, int b)
{
return a + b;
}
};
int main()
{
//成员函数
std::function<int(CTest*, int, int)> func3 = &CTest::Add;
CTest t;
int s3 = func3(&t,3,4);
std::cout << s3 << std::endl;
return 0;
}