01 指针函数与std::function

函数指针

函数返回值类型 (* 指针变量名)  (参数列表)
int (*p) (int, int)

指针函数

*类型标识符 函数名 (参数表)
int *p (int, int)
区分方法
1. 函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。
2.()的优先级比指针符号*的优先级高,优先级最高的是括号,而它是个函数,所以整体是个函数;返回值类型是指针。如果先出现的是(*p),它是一个指针,所以整体是个函数指针。

std::function

  • 类模版std::function是一种通用、多态的函数封装。
  • std::function对象是对C++中现有的可调用实体的一种类型安全的封装。它最重要的功能是实现延时调用,可调用对象的包装器。
//声明一个模板
using FunCtional = std::function<int(int)>;
// 绑定lambda函数  
std::function<int(int)> FunCtional = [](int a)->int {returna;};
// 封装类的成员函数
CTest t;
Functional f = std::bind(&CTest::Func, &t, std::placeholders::_1);
int ret = f(3);

// 封装类的static函数
CTest t;
Functional f = CTest::SFunc;
int ret = f(3);
posted @ 2018-12-06 23:17  osbreak  阅读(308)  评论(0编辑  收藏  举报