C++ lamda表達式當函數參數傳遞

  1. 模板
    template<typename Fn>explicit
    
    Pormise(QObject *parent, IWorkObj * work, Fn successS)

  2. std:function<>
    explicit Pormise(QObject *parent, IWorkObj * work, std::function<void(QString)> successS);
區別:
    用template<class Fn>可以不依賴STL,且是編譯期多態,不過這樣每個匿名函數都會產生一個新的函數實例。而用std::function<>實現多態,可以縮小模版實例化範圍,但是運行時多態。各有利弊。如果是簡單函數,建議前者,寫成inline,複雜函數還是後者好。

參考:https://www.zhihu.com/question/48354089?sort=created


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章