# include <iostream>
# include <functional>
// 分别定义两种函数形式相似的 function, 主要看函数返回值和函数参数类型及其个数
typedef std::function<int(int, int)> comfun;
typedef std::function<int(int)> comfun1;
// 3种函数形式类似的具体函数实例
// 普通函数
int add(int a, int b)
{
std::cout << "add:" << std::endl;
return a + b;
}
// lambda表达式
auto mod = [](int a, int b)
{
std::cout << "mod:" << std::endl;
return a % b;
};
// 函数对象类
struct divide
{
//重载()
int operator()(int denominator, int divisor) {
std::cout << "divide:" << std::endl;
return denominator / divisor;
}
// 重载+
int operator+ (int a) {
std::cout << "add+1:" << std::endl;
return a + 1;
}
};
struct addOffset
{
int operator() (int a) {
return a + 1;
}
int operator+ (int a) {
return a + 1;
}
};
int main()
{
comfun a = add;
comfun b = mod;
comfun c = divide();
std::cout << a(5, 3) << std::endl;
std::cout << b(5, 3) << std::endl;
std::cout << c(5, 3) << std::endl;
comfun1 c1 = addOffset();
comfun1 c2 = addOffset();
std::cout << c1(1) + c2(2)<< std::endl;
getchar();
}
c++ 11 std::function简单使用
最新推荐文章于 2024-05-16 08:00:00 发布