https://www.cnblogs.com/bencai/p/9124654.html //关于function
https://www.cnblogs.com/geloutingyu/p/8335230.html //关于lambda、bind
序
为编写更通用的代码,将数据类型与方法、类分离,这就是泛型编程思想。
C++ 的三大面向对象特性:封装、继承、多态。它们分别保证了安全性、可复用性以及特性。
偷懒是人类的重要生产力。
从类的继承、template、函数指针,再到function、lambda,均是为了践行泛型编程思想,让偷懒更成功。
下面给出几个常用、浅显、直观的例子,学习函数指针、function、lambda的使用。
函数指针
#include<iostream>
using namespace std;
class Foo
{
public:
void foo(int i) { cout << "Foo:" << i << endl; }
};
void foo(int i) { cout << i << endl;}
int main()
{
void (*func1) (int x);
func1 = foo;
func1(1);
void (Foo::*func2) (int);
func2 = Foo::foo;
Foo f;
(f.*func2)(2);//一个很别扭但正确的调用方式,成员函数必须绑定到一个对象实例上
}
main函数里的第一部分是普通函数的函数指针的使用。第二部分是类成员函数的函数指针的使用。