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函数里的第一部分是普通函数的函数指针的使用。第二部分是类成员函数的函数指针的使用。
function
https://www.cnblogs.com/bencai/p/9124654.html
lambda
lambda是一种一次性的匿名函数,有定义而无函数名,与普通函数性能一样强。
形式为:
[捕获列表](参数列表) ->返回值{函数体}
主要说说捕获列表:
1、默认情况下

本文介绍了C++11中的泛型编程思想,通过函数指针、std::function和lambda表达式来实现。详细讲解了lambda的捕获列表、按值和按引用传递局部变量,以及如何结合std::bind使用。内容包含实例演示和相关链接,展示了这些工具在实际开发中的应用。
最低0.47元/天 解锁文章
689

被折叠的 条评论
为什么被折叠?



