用 C++ lambda 太爽了

40 天前
 zhuyongqi9

写 GUI 经常碰到需要使用 callback 来描述 event 发生时的 behavior ,在 callback 函数里面不可避免的要使用到某些变量,之前不用 lambda 需要把 callback 内引用的变量都作为全局变量,现在用了 lambda 之后可以直接变量捕捉,在 class method 内也能捕获 this 指针,用起来太爽了

5303 次点击
所在节点    C++
53 条回复
kera0a
40 天前
写 c++ 的这么惨吗?
AllenTsui
40 天前
写 c++ 的这么惨吗?
zmxnv123
40 天前
写 c++ 的这么惨吗?
orionl
40 天前
写 c++ 的这么惨吗?
majiangjun
40 天前
写 c++ 的这么惨吗?
ouou0701
40 天前
写 c++ 的这么惨吗?
chunriyeqiukong
40 天前
写 c++ 的这么惨吗?
fgsiveoneone
40 天前
这不是 C++11 引入的吗?今夕是何年
zhuyongqi9
40 天前
纯纯惨了,以前写 js 的时候从来没考虑过这种问题
zhuyongqi9
40 天前
@fgsiveoneone 是的
BBCCBB
40 天前
写 c++ 的这么惨吗?
ink19
40 天前
写 c++ 的这么惨吗?
chingyat
40 天前
为啥要用全局变量?就算不用 lambda 也应该给个 void *user_data 参数吧。
zhuyongqi9
40 天前
@chingyat 参数是指这种吗?
void* (*f)(void *user_data);
我想表达的意思是非函数参数的变量
ugpu
40 天前
以前:
callBack() { getInstance().fun_a(); xxxx; dosomething..... } //安全的 low 了点
callBack() { global_ptr->func(); } //天杀的 天塌了 全局指针指向的对象被销毁了.

现在: obj.CallFunc([this]() { .a++; .b--; }

由此可见 写 C++的是真的惨.
ugpu
40 天前
@zhuyongqi9
尴尬的就是指针指向的对象 协同工作里都是其他模块的 崩的时候就是甩锅. 然后他说你不看文档.最后总结没有文档规范等等一系列问题.
尤其长期维护工程 新员工进来 那叫一个惨.
后来大家都用 全局变量 getInstance()->xxxx. 指针都给弄没了。 你说你要用 智能指针. 还是自己封装的. 结果用起来又内存泄露.
CPP 被弃用的问题是 维护成本太高了... 业务码农还要关心技术 结构问题.成本高。 解决方案用指针和全局变量都是为了堵漏.
zhuyongqi9
40 天前
@ugpu hhhhhhhh
ugpu
40 天前
还有那种天杀的队友, 一个对象虚继承. A->b->c 析构函数也是虚函数, 他用完 销毁了 C. 别人还在用 B.
万丈高楼轰然倒塌就是这么来的.
要是扯设计 规范 用法 一群程序员有一群想法.
我建议大家用 Java & Golang. CPP 真不适合团队协作. 单机王用 CPP 爽
originals
40 天前
用的时候挺爽的,就是优化等级高了后,崩了找不到地方
snylonue
40 天前
c++ 的 lambda 感觉挺啰嗦的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1091206

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX