楼主:
wawi2 (@@)
2020-07-26 10:56:08不是很确定C++版本 不过应该是C++11以后的
题目问 [](){}() 是什么意思?
想不透。。。
我只能硬回如果是[](){}的话代表是一个什么都不做的lambda
但是改成[](){}()我真的想不透是什么意思
请大大们赐教 谢谢
[](){} 是 lambda expr, 它的功用就是建立 closure物件, 在 lambda expr 后面直接加上 () 是针对这个function object 直接呼叫, 所以整个叙述的型别取决于 lambda expr 里的 return statement, 这个常被用于物件的初始化, 某些物件必须要在建构的时候就完全给足参数, 没办法先用 default ctor 建构之后才用
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2020-07-26 11:11:00一个什么都不做的 lambda 建立后马上被呼叫
init() 之类的成员去预备好物件状态, 所以常会在这个lambda expr 里做好需要的判断, 所以你会经常看到 if/switch 语句在里头, 通常回传的物件会是 movable,这时候的 closure 起到的就是 inline factory method的角色
作者:
Dracarys (MayShowGunMore)
2020-07-26 20:40:00如果你有个object的初始化逻辑很复杂就可以包在里面,这样不仅限制了初始化中间产物的scope,你也可以把被初始化的对象宣告为const(适用的话)。BS的书有讲到
Immediately invoked function expressionImmediately invoked function expression
作者:
Dracarys (MayShowGunMore)
2020-07-28 21:54:00A tour of C++ 第二版 6.3.3
楼主:
wawi2 (@@)
2020-07-29 09:59:00谢谢大家的回答 了解了 另外给一个例子(从lovejomi来的)shorturl.at/oMRV2