文章目录
- 概述
- 1.函数以及函数指针
- 函数
- 函数指针
- 2.成员函数指针
- 3.lamda表达式
- 4.函数对象(Func)
- 5.通过 std::function 包装的可调用对象
- 小结
概述
在C++中,“可调用对象”(Callable)是一个可以被调用的对象,它可以接受参数并产生结果。可调用对象可以是函数、函数指针、成员函数指针、lambda表达式、函数对象(functor)、以及通过 std::function 包装的任何可调用实体。
1.函数以及函数指针
函数
void Func() {// 函数体
}
函数指针
void (*funcPtr)() = Func;
2.成员函数指针
class MyClass {
public:void memFunc() {// 成员函数体}
};
// 成员函数指针
void (MyClass::*memFunc)() = &MyClass::memFunc;
3.lamda表达式
这个就不多说了,之前写过,可以去看看。
4.函数对象(Func)
struct Func{int operator()(int x) {return x * 3;}
};
这个是重载了 operator() 操作符。stl里大量使用了这种写法,如下图:
5.通过 std::function 包装的可调用对象
std::function<void()> func = myFunc;
void callFun(std::function<void()> func) {func();
}
callFun(myFunc); // 传递函数
callFun(funcPtr); // 传递函数指针
callFun(Func()); // 传递函数对象
std::function 是一个比较通用的,在stl模板中的。还有一种调用是lamda表达式的,都经常使用。
小结
这个总结写了可调用对象,C++中常用的一些调用形式。像函数,函数指针,lamda表达式(这个之前写过),函数对象,通过std::function包装的可调用对象;这些都常用,感兴趣,可以学习学习。感觉还不错,OK,翻篇。