爲什麼lambda沒有缺省構造函數的原因是什麼?這背後是否有任何技術原因,還是純粹的設計決定?爲什麼閉包類型/ lambdas在C++中沒有默認構造函數
2
A
回答
0
lambda表達式在C++是一個語法上的方便,以允許程序員避免宣告使用傳統的句法的算符等
struct my_functor
{
bool operator()(Object &) { /* do something */ return false; }
}
因爲使用此語法寫入函子被認爲太長篇大論爲簡單的功能。
Lambdas提供參數捕捉選項,例如[=],[&]等,以便爲您節省聲明變量並初始化變量,就像您在函子對象的構造函數中所做的那樣。
因此,Lambdas不會向設計公開任何構造函數語法。
沒有任何技術上的原因,lambda函數無法公開構造函數,但是如果這樣做,它將停止模仿它命名的設計概念。
感謝評論員在這個問題下。
+1
評論Lambdas確實暴露覆制和移動構造函數,但。 – AndyG
相關問題
- 1. @Delegate類沒有默認構造函數
- 2. 子類構造函數 - 爲什麼必須爲子類構造函數存在默認構造函數?
- 3. 爲什麼QAction沒有默認構造函數?
- 4. 爲什麼PHP沒有默認構造函數?
- 5. 爲什麼我的DataClassesDataContext沒有默認構造函數?
- 6. C++,默認構造函數
- 7. 沒有默認的構造函數
- 8. 沒有默認構造函數 - 繼承
- 9. 爲什麼不調用主類中的默認構造函數?
- 10. 沒有默認構造函數發現
- 11. 類默認構造函數
- 12. System.Configuration.Cast沒有默認的構造函數
- 13. 「RavenReader.Web.Controllers.UserController」沒有默認的構造函數
- 14. 類型'Project1.DTO.MailDTO'沒有默認的構造函數
- 15. AutoMapper.AutoMapperMappingException:類型'System.String'沒有默認構造函數
- 16. 類型沒有默認構造函數automapper
- 17. 註冊一個沒有默認構造函數的類型
- 18. 類型控制器沒有默認構造函數
- 19. 「沒有默認構造函數」一類型
- 20. 默認構造函數與正常構造函數的類C++
- 21. 成員沒有默認構造函數
- 22. 默認和默認構造函數有什麼區別
- 23. 沒有默認構造函數的默認值
- 24. 爲什麼默認構造函數在父類中是必需的,如果它具有參數構造函數?
- 25. 爲什麼C#中的結構不能有明確的默認構造函數
- 26. F#:沒有默認構造函數作爲類型參數的類?
- 27. DatabaseManager沒有默認構造函數
- 28. 什麼時候在C++中生成默認構造函數
- 29. 爲什麼編譯器會抱怨超類沒有構造函數,當默認的構造函數被自動賦予一個沒有構造函數的類?
- 30. 「在抽象類中沒有默認構造函數」
它的目的是什麼?它是在你聲明它時構造的。 – NathanOliver
你在設想一個默認構造函數在做什麼? –
@NathanOliver,我會喜歡在[這個答案](http://stackoverflow.com/a/41189224/434551)默認構造的lambda函數。把它看作指針的'nullptr'類似物。 –