簡體   English   中英

為什么閉包類型/ lambda在C ++中沒有默認構造函數

[英]Why closure types / lambdas have no default constructor in C++

lambdas沒有默認構造函數的原因是什么? 這背后有任何技術原因,還是純粹的設計決策?

C ++中的Lambdas是一種語法上的便利,它允許程序員避免使用傳統語法來聲明仿函數

struct my_functor
{
bool operator()(Object &) { /* do something */ return false; }
}

因為使用這種語法編寫仿函數對於簡單函數來說太長了。

Lambdas提供參數捕獲選項,例如[=],[&]等,以保存您聲明變量並初始化它們,就像您在仿函數對象的構造函數中所做的那樣。

因此,Lambdas不會通過設計向您公開任何構造函數語法。

沒有技術原因lambda函數不能公開構造函數,但如果它這樣做,它將停止模仿它命名的設計概念。


感謝評論員提出的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM