#include <iostream>
int add(int a,int b)
{
return a+b;
}
struct Obj
{
int operator()(int a,int b)
{
return a+b;
}
};
class OperatingNumbers
{
private:
int num1;
int num2;
public:
explicit OperatingNumbers(int a=1,int b=1):num1(a),num2(b){}
~OperatingNumbers(){}
public:
int getNumbyRtnFunction(int (*p)(int a,int b))
{
return p(num1,num2); //利用回调函数来求和
}
int getNumbyObj(Obj obj)
{
return obj(num1,num2); //利用函数对象,即仿函数来求和
}
int getNumbyLambda()
{
return [](int a,int b)->int{ return a+b;}(num1,num2); //利用lambda表达式求和
}
};
int main(int argc, char* argv[])
{
OperatingNumbers oNum(2,3);
Obj o;
std::cout<<oNum.getNumbyRtnFunction(add)<<std::endl;
std::cout<<oNum.getNumbyLambda()<<std::endl;
std::cout<<oNum.getNumbyObj(o)<<std::endl;
getchar();
return 0;
}