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