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


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