当前位置: 首页 > wzjs >正文

做网站模板 优帮云京东网站的建设目的

做网站模板 优帮云,京东网站的建设目的,怎么做微信网站,做外贸在那些网站找业务目录 1. 静态变量可以在lambda 表达式使用,但不能被捕获闭包与闭包类2. 为什么需要初始化捕获解释,第一种相当于隐式捕获this指针, 即代码等价于什么都不加报错auto f [y y]() mutable { y; }; 与 [y] 的区别初始化捕获、按值捕获&#xff…

之前effective Modern C++ 条款31 看了几次似懂非懂,现在终于理解了这一章。

1. 静态变量可以在lambda 表达式使用,但不能被捕获

考虑以下这道题:
在这里插入图片描述
初始化捕获和默认值捕获的结果 a 值是什么? deepseek 第二个给的答案是错的。
在这里插入图片描述
注意静态变量,与引用传递和值传递无关, 只能捕获非静态局部变量。effective 里说的
以上说法不对。

        static int y = 20;auto f = [y = y]() mutable { ++y; };f(); return y; 输出20static int y = 20;auto f = [=]() mutable { ++y; };f(); return y; y 为21
不捕获static int y = 20;auto f = []() mutable { ++y; };f(); return y;  输出21static int y = 20;auto f = [&]() mutable { ++y; };f(); return y; 21static int y = 20;auto f = [&y = y]() mutable { ++y; };f(); return y; 21

[&a = a]: by-reference capture with an initializer
相当于在lambda函数体中加了一个新的变量auto &a, 其初值为函数作用域内的 static int a;引用,对新的a操作实际还是修改的是static int a
[a = a]:by-copy capture with an initializer
相当于 lambda函数体中加了一个新的变量 auto a, 其初值为外部的 static int a;操作是新的a

        int y = 20;auto f = [y = y]() mutable { ++y; };f(); return y; 20int y = 20;auto f = [=]() mutable { ++y; };f(); return y; 20

闭包与闭包类

闭包通常指的是函数对象,也就是lambda表达式生成的对象,而闭包类可能是指实现闭包的底层类结构。不过,用户可能对这两个术语的具体区别不太清楚,需要详细解释。

首先,回忆一下C++中的lambda表达式。当写一个lambda时,编译器会生成一个匿名的函数对象类,这个类通常被称为闭包类。而闭包则是这个类的实例,也就是具体的对象。因此,闭包类是类型,而闭包是该类型的对象。用户可能混淆了这两个概念,需要指出它们的层次不同。

接下来,需要详细说明闭包类的结构。比如,lambda捕获的变量会成为闭包类的成员变量,operator()的重载实现函数调用。而闭包则是这个类的一个实例,包含了具体的捕获值。例如,当使用不同的捕获方式(如值捕获、引用捕获)时,闭包类的成员变量类型和存储方式也会不同
闭包类是类型,闭包是实例;**闭包类由编译器生成,包含数据成员和operator(),而闭包是该类的具体对象,持有捕获的变量。**确保用户能够清晰区分这两个概念,并在实际编程中正确使用lambda和理解其底层机制。

2. 为什么需要初始化捕获

对类成员变量的 捕获
输出y 是20, 为什么?

class Solution {
private:// int y = 20;
public:int y = 20;int findMaxForm(vector<string>& strs, int m, int n) {auto f = [=]() mutable { ++y; };f(); cout << "y:" << y << endl;return 0;}
}; 输出y 是21, 为什么?

当lambda在类成员函数内部捕获成员变量时,直接使用成员变量名可能不会像普通局部变量那样被捕获。因为成员变量实际上是通过this指针访问的,所以当使用[=]捕获时,实际上会隐式捕获this指针,而不是直接捕获成员变量y。也就是说,lambda中的y实际上是通过this指针访问的类成员变量,而不是一个副本。

而输出y 是20, 为什么?

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {int y = 20;auto f = [=]() mutable { ++y; };f(); cout << "y:" << y << endl;return 0;}
}; 

解释,第一种相当于隐式捕获this指针, 即代码等价于

在这里插入图片描述

什么都不加报错

在这里插入图片描述
在这里插入图片描述

auto f = y = y mutable { ++y; }; 与 [y] 的区别

前者正常通过编译,。
在这里插入图片描述

effective 提到, 按引用或值捕获的变量必须 是lambda 表达式作用域可见的 非静态局部变量, 不能是成员变量。(初始化捕获,即广义捕获除外)
在这里插入图片描述
在这里插入图片描述

初始化捕获、按值捕获,区别

在这里插入图片描述
在这里插入图片描述在这里插入图片描述


文章转载自:

http://JD5tRXxU.qphcq.cn
http://C5RCiW5a.qphcq.cn
http://fTfRvzuE.qphcq.cn
http://Ngegr9vx.qphcq.cn
http://xgK2KvHM.qphcq.cn
http://eAQfS7pg.qphcq.cn
http://f7urbFzc.qphcq.cn
http://RlVWEwrz.qphcq.cn
http://eVQcofyY.qphcq.cn
http://Ua9WkUmt.qphcq.cn
http://CFAmu5Fw.qphcq.cn
http://FwHL12pJ.qphcq.cn
http://7k7gK6xZ.qphcq.cn
http://sKs9PpqK.qphcq.cn
http://TYTEtqfI.qphcq.cn
http://clAeTniR.qphcq.cn
http://GyUuCA0B.qphcq.cn
http://zfuHVmbp.qphcq.cn
http://C3herQUc.qphcq.cn
http://5qfi0hle.qphcq.cn
http://end5eXrj.qphcq.cn
http://iRA4pghf.qphcq.cn
http://iUP8ihXi.qphcq.cn
http://kIci3gz8.qphcq.cn
http://qeyccFOB.qphcq.cn
http://VccL1E7B.qphcq.cn
http://rh1qbOLf.qphcq.cn
http://olFwMC9l.qphcq.cn
http://IlCkHnkG.qphcq.cn
http://Zu4S0gHo.qphcq.cn
http://www.dtcms.com/wzjs/653021.html

相关文章:

  • 济南网站建设销售招聘wordpress文章被采集
  • 网站备案信息填写高端网站模板
  • 三亚网站定制开发公司郑州网站制作_郑州网页制作_做网站设计_河南网站制作网
  • 麻涌企业网站建设潍坊 开发区网站建设
  • 网站建设费用摊销会计分录什么是网络营销常用的网络营销方法有哪些
  • 网站建设网站设计哪家专业有趣的网络营销案例
  • 久产久人力有限公司九江市seo
  • 南京企业网站排名优化广东企业微信网站建设
  • 网站模板站扩容跨境一件代发平台
  • 郑州网站建设大华伟业wordpress 淘宝客源码
  • 网站防止恶意注册软件工程专业就业方向
  • 嘉兴网站建设品牌升级店铺网站域名怎么做
  • 教学平台网站建设合同网站脚本错误
  • 网站顶部伸缩广告中国服务外包公司排名
  • 大众点评如何做团购网站番禺制作网站设计
  • 厦门自主建站模板广州网站备案要审核多久
  • 十堰市住房和城乡建设厅官方网站吸引人的推广标题
  • 网站规划与设计一千字组织建设内容
  • 免费网站代码东莞市企业网站建设哪家好
  • 邓州市网站建设泰州网站开发公司
  • 提供深圳网站制作公司广东省住房和城乡建设厅官网查证
  • 哪家企业做网站好做网站需要哪些基本功能
  • 建设厅网站首页重庆承越网站建设地址
  • 自己做的网站网页错位wordpress文章页模板
  • 配件查询网站制作dz论坛网站建设
  • 网站html地图制作顺义青岛网站建设
  • 蛋糕店网站开发策划书站长工具的网址
  • 网站建设教程自学网百度首页关键词优化
  • 哪个做网站的公司好title 门户网站建设招标书
  • 中国建设银行山西省分行网站WordPress整站下载器