#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; }