PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] C++考题 - [](){}()是什么意思
楼主:
wawi2
(@@)
2020-07-26 10:56:08
不是很确定C++版本 不过应该是C++11以后的
题目问 [](){}() 是什么意思?
想不透。。。
我只能硬回如果是[](){}的话代表是一个什么都不做的lambda
但是改成[](){}()我真的想不透是什么意思
请大大们赐教 谢谢
作者:
TitanEric
(泰坦)
2020-07-26 11:04:00
lambda咦 有点不太一样
作者:
loveme00835
(发箍)
2020-07-26 11:08:00
[](){} 是 lambda expr, 它的功用就是建立 closure物件, 在 lambda expr 后面直接加上 () 是针对这个function object 直接呼叫, 所以整个叙述的型别取决于 lambda expr 里的 return statement, 这个常被用于物件的初始化, 某些物件必须要在建构的时候就完全给足参数, 没办法先用 default ctor 建构之后才用
作者:
uranusjr
(â†é€™äººæ˜¯è¶…級笨蛋)
2020-07-26 11:11:00
一个什么都不做的 lambda 建立后马上被呼叫
作者:
loveme00835
(发箍)
2020-07-26 11:12:00
init() 之类的成员去预备好物件状态, 所以常会在这个lambda expr 里做好需要的判断, 所以你会经常看到 if/switch 语句在里头, 通常回传的物件会是 movable,这时候的 closure 起到的就是 inline factory method的角色
作者:
Dracarys
(MayShowGunMore)
2020-07-26 20:40:00
如果你有个object的初始化逻辑很复杂就可以包在里面,这样不仅限制了初始化中间产物的scope,你也可以把被初始化的对象宣告为const(适用的话)。BS的书有讲到
作者:
lovejomi
(JOMI)
2020-07-28 20:07:00
Immediately invoked function expressionImmediately invoked function expression
作者:
james732
(好人超)
2020-07-28 20:22:00
请问Dracarys提到的书是哪一本呢?
作者:
Dracarys
(MayShowGunMore)
2020-07-28 21:54:00
A tour of C++ 第二版 6.3.3
作者:
james732
(好人超)
2020-07-28 21:58:00
谢谢回答!!
作者:
Killercat
(杀人猫™)
2020-07-29 08:34:00
这我还真的想不太到use case....
楼主:
wawi2
(@@)
2020-07-29 09:59:00
谢谢大家的回答 了解了 另外给一个例子(从lovejomi来的)shorturl.at/oMRV2
继续阅读
[问题] 递回呼叫函数发生存取违规!?
ericerix
[问题] 为什么make -j建议加偶数
sakishil
[问题] 默认引数
spong
[问题] C贪食蛇问题
a71245969
Re: [问题] C++ sort函数在leetcode上使用问题
poyenc
[问题] C++ sort函数在leetcode上使用问题
wilson50101
Re: [问题] 用书分析或推荐
MartinJ40
[问题] 请问不定参数函式怎写override?
Keitaro
Re: [问题] 用书分析或推荐
james732
[问题] 用书分析或推荐
spong
Links
booklink
Contact Us: admin [ a t ] ucptt.com