zoukankan      html  css  js  c++  java
  • duilib框架分析:几个回调(C++11)

    里面涉及的几个回调还比较有用处,记录一下用做练手
    主要还是一个原理:函数和方法基本是相似的,区别仅仅在于方法可能带有一个状态(对象拥有的成员变量),在C++11中使用std::function将调用统一

    typedef std::function<void(const std::string&)> Callback;
    class A {
    public:
        virtual void Create(const std::string &str) { std::cout << "default create" << std::endl; }
    };
    class B :public A {
    public:
        //虚方法重写
        virtual void Create(const std::string &str) { std::cout << str << std::endl; }
    };
    
    void Builder(const std::string &name, Callback cb = Callback()) {
        //...先根据其它条件创建
        //...如果都不满足且有回调的情况,执行回调创建
    
        if (cb) {
            cb(name);
        }
    
        //或者:cb也可以和NULL进行比较
        //if (cb != NULL) {
        //    cb(name);
        //}
    }
    int main()
    {
        auto b = new B();
        auto cb = std::bind(&A::Create, b, std::placeholders::_1);
        Builder("box",cb);//"box"
        Builder("label",cb);//"label"
    
        Builder("vbox", Callback());
    }
  • 相关阅读:
    Java 的类加载顺序
    单链表之一元多项式求和C++实现
    顺序线性表之大整数求和C++实现
    线性表之单链表C++实现
    NOIP 2009 潜伏者
    JDOJ 2782: 和之和
    浅谈前、中、后缀表达式
    CF13B Letter A
    洛谷 P5015 标题统计
    NOIP 2013 转圈游戏
  • 原文地址:https://www.cnblogs.com/tinaluo/p/14394884.html
Copyright © 2011-2022 走看看