lambda - 函数闭包 🆚 函数对象

总结

  • lambda的一种方式,其就是实现函数对象的==语法糖==
    • 且写lambda时就已经显示创建了一个该函数类的实例化对象,即modi就是一个函数对象

函数类

重载()运算符的类型就是函数类

lambda

扩展为函数类时,其内部的()重载函数默认是const修饰的

  • 那他怎么修改捕获的对象?-> 默认const则不能修改引用方式捕获的外部变量
    • 因为const不允许修改成员变量
  • 值捕获时需要在lambda后面加上mutable进行修饰,对闭包成员变量进行修改
    1
    auto modi = [=all]() mutable -> void { ... };
  • 引用捕获时,默认内部的()为非const的,因此可以修改其成员变量

lambda - 函数闭包 🆚 函数对象
http://example.com/2024/09/05/CPP/lambda - 函数闭包 🆚 函数对象/
作者
Cyokeo
发布于
2024年9月5日
许可协议