0%

分析基于epoll的C++高性能webServer代码(一)

分析基于epoll的C++高性能webServer代码(一)

std::function用法

  • 参考链接 cpp官方reference
  • 类模板std :: function是一个通用的多态函数包装器std :: function的实例可以存储,复制和调用任何可调用的目标 :包括函数,lambda表达式,绑定表达式或其他函数对象,以及指向成员函数和指向数据成员的指针。当std::function对象未包裹任何实际的可调用元素,调用该std::function对象将抛出std::bad_function_call异常。

成员函数

成员函数声明 说明
constructor 构造函数:constructs a new std::function instance
destructor 析构函数: destroys a std::function instance
operator= 给定义的function对象赋值
operator bool 检查定义的function对象是否包含一个有效的对象
operator() 调用一个对象

使用例

  • 调用普通函数
#include <functional>
#include <iostream>
int f(int a, int b)
{
return a+b;
}
int main()
{
std::function<int(int, int)>func = f;
cout<<func(1, 2)<<endl; // 3
system("pause");
return 0;
}

  • 调用模板函数对象
#include<iostream>
using namespace std;

//function object
template<class T>
struct functor
{
public:
T operator() (T a, T b)
{
return a + b;
}
};
int main()
{
functor ft;
function<int(int,int)> func = ft<int>();
cout<<func(1,2)<<endl; //3
return 0;
}
  • 调用lambda表达式
#include <functional>
#include <iostream>
using namespace std;
int main()
{
auto f = [](const int a, const int b) {return a + b; };
std::function<int(int, int)>func = f;
cout << func(1, 2) << endl; // 3
system("pause");
return 0;
}

epoll原理以及讲解