栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++11 lambda表达式 和 Qt槽函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++11 lambda表达式 和 Qt槽函数

lambda表达式是c++ 11的重要且常用特性。

使用lambda表达式有诸多好处:

1.就地匿名定义目标函数或函数对象,在关注函数实现的场景下不用费力气给函数起名和在别处定义,具有很好的可读性和可维护性;

2.简洁,让使用者聚焦于解决核心问题;

3.实现功能闭包。

格式

[capture] {params} opt-> ret { body;};

如果返回值可以推导获得,可省略,没有参数,()也可省略,最简单的格式[capture]{body};

例子:

auto f = [](int a) ->int { return a+1; };

std::cout << f(1) << std::endl;  //输出2

这里 自动推导 f 的类型,因为没有捕获 所以 f 可以只是个函数指针, 如果有捕获,f是一个函数对象。

就我自己在开发中使用lambda最多的两个地方:

其一是用做Qt的槽函数,尤其是在需要捕获变量或者要连续发信号的场景,用lambda很方便。有一个需要注意的地方是,如果捕获指针,在槽函数调用时这个指针所指向的内存可能已经释放了。

另外一个地方就是用std::sort对自定义类型排序时,用lambda实现仿函数,实现功能闭包也有很好的可读性和可维护性。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号