加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Lambda捕获

发布时间:2020-12-16 10:44:41 所属栏目:百科 来源:网络整理
导读:我总是对lambda捕获感到困惑,我不知道变量是通过引用还是通过值捕获的.例如,如果我有[a]我不知道a是通过值还是通过ref捕获的. 我认为一个简单的方法就是通过例子.因此,让每个案例都有一个案例(如果有更多表达同一事物的方式,则更多): 捕获: 没什么 全部通
我总是对lambda捕获感到困惑,我不知道变量是通过引用还是通过值捕获的.例如,如果我有[a]我不知道a是通过值还是通过ref捕获的.

我认为一个简单的方法就是通过例子.因此,让每个案例都有一个案例(如果有更多表达同一事物的方式,则更多):

捕获:

>没什么
>全部通过参考
>所有的价值
> r1,r2作为参考.没有其他的.
> v1,v2按值.没有其他的.
> r1,r2作为参考.按价值休息.
> v1,v2按值.通过参考休息.
> r1,r2作为参考,v1,v2按值.没有其他的.

让我们完全忽略这一点,因为那是另一袋蠕虫.

解决方法

| Capture                                       | Syntax             |
| --------------------------------------------- | ------------------ |
| nothing                                       | []                 |
| all by reference                              | [&]                |
| all by value                                  | [=]                |
| r1,r2 by reference. Nothing else.            | [&r1,&r2]         |
| v1,v2 by value. Nothing else.                | [v1,v2]           |
| r1,r2 by reference. Rest by value.           | [=,&r1,&r2]      |
| v1,v2 by value. Rest by reference.           | [&,v2]        |
| r1,r2 by ref,v2 by value. Nothing else. | [v1,v2,&r2] |

规则很简单:以&开头,按引用捕获.仅限名称,按值捕获.

默认值:=全部按值,&全部参考.要从“所有”中排除的东西使用上面的简单规则.

完整规则可在cppreference上阅读.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读